Saya menyalin ratusan file ke komputer lain menggunakan scp
perintah yang saya dapatkan stalled
kesalahannya . Sekarang saya akan menyalin file lagi. Apakah ada cara untuk menghindari menyalin file yang sudah disalin?
Saya menyalin ratusan file ke komputer lain menggunakan scp
perintah yang saya dapatkan stalled
kesalahannya . Sekarang saya akan menyalin file lagi. Apakah ada cara untuk menghindari menyalin file yang sudah disalin?
Jawaban:
Anda bisa menggunakannya rsync
untuk itu. rsync
benar-benar dirancang untuk jenis operasi ini.
Sintaksis:
rsync -avh /source/path/ host:/destination/path
atau
rsync -a --ignore-existing /local/directory/ host:/remote/directory/
Ketika Anda menjalankannya pertama kali akan menyalin semua konten kemudian hanya akan menyalin file baru.
Jika Anda perlu menyalurkan lalu lintas melalui koneksi SSH (misalnya, untuk tujuan kerahasiaan), seperti yang ditunjukkan oleh Anda pada awalnya meminta solusi berbasis SCP, cukup tambahkan -e ssh
ke parameter rsync
. Sebagai contoh:
rsync -avh -e ssh /source/path/ host:/destination/path
rsync -t *.c foo:src/
-> "Ini akan mentransfer semua file yang cocok dengan pola * .c dari direktori saat ini ke direktori src pada mesin foo. Jika ada file yang sudah ada pada sistem remote maka rsync remote- protokol pembaruan digunakan untuk memperbarui file dengan hanya mengirim perbedaan "
rsync -avuzh /source/path/ host:/destination/path
. Itu melakukan seluruh pekerjaan dalam satu perintah, dan pada pemanggilan berikutnya, hanya mentransfer file yang membutuhkannya.
Jika Anda ingin tetap dengan scp untuk alasan apapun, Anda mungkin menghapus w hak akses pada data lokal Anda (jika Anda memiliki hak untuk melakukannya) dan scp tidak akan menyentuhnya. Lebih tepatnya:
chmod a-w local/*.tar.gz
(dalam direktori lokal Anda)scp remote/*.tar.gz local
Ini tidak terlalu efisien, baik tetapi mungkin membantu jika Anda memerlukan solusi sementara cepat tanpa mengubah ke sesuatu yang lain daripada scp. (Kudos: scp tanpa mengganti file yang ada di tujuan )
Tidak ada jawaban pasti tentang bagaimana melakukan ini dengan SCP, karena itu adalah pertanyaan awal yang diajukan.
sudo find /files/ -type f -exec chmod a-w {} \;
scp -r username@server.com:/file/location/* /files
Setelah selesai menyalin file, ubah kembali izin:
sudo chmod a+w -R /files
--ignore-existing
benar-benar dibutuhkan?