Bagaimana saya bisa mendapatkan perintah scp untuk menimpa folder tujuan

32

Saya menggunakan perintah scp untuk menyalin beberapa file ke komputer remote, seperti yang Anda lakukan dengan scp :)

Saya perhatikan bahwa perilaku default dari salinan scp untuk file adalah menimpa file yang ada. Sekarang saya ingin menyalin folder jadi pada dasarnya saya melakukan hal yang sama:

scp -r <source_path> user@myOtherPc:<dest_path>

Di mana bagian dalam & lt; & gt; adalah jalur folder saya. Namun ketika saya menjalankan ini saya mendapatkan pesan "file ada". Apakah ada jalan keluarnya? semacam kekuatan over-write?

Terima kasih, Makanan ternak

code_fodder
sumber
2
Bisakah Anda memberikan beberapa contoh jalan? Saya tidak melakukan untuk mereproduksi ini di sistem saya. Juga, sudahkah Anda memeriksa izin file?
Levans
Apakah itu memberi Anda info berguna jika Anda menggunakan mode verbose? -v. Juga, apakah Anda menggunakan jalur absolut atau relatif di sisi tujuan? Saya pikir jika folder tujuan sudah ada, itu akan membuat jalur sumber di dalam folder tujuan daripada menimpa ( testdir/testdir )
beroe
2
Sungguh aneh Anda mendapatkan ini. Seharusnya scp tidak memiliki noclobber ...
beroe
1
@Levans Saya tidak memeriksa izin, saya baru saja melihatnya dan saya pikir Anda mungkin benar. Saya menghapus semua yang ada di area target dan mulai lagi hanya menggunakan perintah "scp" dan menggunakan "root" pengguna dan saya dapat menyalin file / folder beberapa kali :) ... Saya tidak 100% yakin apa masalah izin saya pernah, tapi sekarang saya memiliki "pegangan" pada masalah ini saya mungkin bisa mengatasinya, terima kasih
code_fodder
1
@ Ya ampun, ini adalah apa yang saya pikir juga ... itu membingungkan saya, tapi saya pikir saya telah membuat semacam kesalahan pengguna di sini dengan izin, saya belum ahli linux :( Tapi saya akan mencoba verbose-ness lain kali saya memiliki masalah seperti itu untuk mendapatkan info lebih lanjut, terima kasih. Juga saya perhatikan bahwa kadang-kadang Anda mendapatkan "folder-di dalam-folder" yang terjadi ... tapi itu masalah lain: o
code_fodder

Jawaban:

20

Seperti yang dikatakan sebelumnya, scp dengan senang hati menimpa file apa pun yang sudah ada.

Masalah "file ada" hanya dapat terjadi ketika Anda memiliki beberapa proses lain (seperti proses bersamaan scp, atau yang lain) menulis folder dan file ke tujuan yang sama. Pertimbangkan untuk menggunakan rsync sebagai gantinya.

nicolasochem
sumber
1
Saya hanya akan menambahkan: ... selama Anda memiliki akses tulis ke file itu ...
SDsolar
4

Seperti Levans, saya tidak dapat meniru ini, tetapi apakah Anda sudah mempertimbangkan untuk menggunakan rsync daripada ssh? Jika Anda menyalin banyak file, rsync mungkin merupakan opsi yang lebih baik daripada scp. Ada sejumlah panduan bagus untuk online, seperti ini:

http://troy.jdmz.net/rsync/index.html https://calomel.org/rsync_tips.html

Tautan pertama itu berkaitan dengan cadangan otomatis melalui cron, sehingga beberapa instruksi (seperti membuat kunci ssh tanpa frasa sandi) mungkin tidak relevan bagi Anda.

Ben
sumber
Menarik, saya tidak tahu Anda dapat menggunakan rsync dengan cara itu ... cukup melihat halaman manual dan sepertinya Anda dapat menggunakannya dengan cara yang mirip dengan scp dengan & lt; source_path & gt; dan & lt; user @ host: dest_path & gt; parameter. Saya tidak 100% yakin itu yang saya inginkan karena saya ingin selalu menyalin / menimpa tanpa peduli status apa yang ada di dest, tetapi masih ide yang bagus :)
code_fodder
Ya, mungkin ada baiknya bermain karena harus menyalin file jika telah diubah (atau bagian dari file yang telah diubah, saya perlu memeriksa ulang dan saya sedikit terlalu lelah kan sekarang).
Ben
haha .... jangan khawatir untuk memeriksanya, saya bisa melakukan itu ... tapi terima kasih atas informasinya :)
code_fodder
Ah, keren, aku bisa berhenti memandang korek api sebagai sarana untuk menyangga kelopak mataku terbuka. ;)
Ben
1
Ini bisa berhasil, tetapi sedikit seperti menggunakan palu untuk memukul lalat. ;-)
SDsolar
3

Anda akan menerima pesan kesalahan ini jika direktori tujuan sudah berisi file dengan nama yang sama dengan direktori sumber yang Anda coba transfer. Anda tidak dapat memiliki file dengan nama yang sama dengan direktori di direktori yang sama.

EvR2f
sumber