Bagaimana cara tidak menyalin tetapi memindahkan file dari satu server ke yang lain (keduanya Linux)?
man scp
tidak memberi saya sesuatu yang berguna. Saya tidak dapat menggunakan 'scp' lalu 'rm' karena saya harus memastikan file tersebut berhasil ditransfer. Jika ada kesalahan selama transfer, file tidak boleh dihapus.
Mungkin saya harus menggunakan kode keluar entah bagaimana, tapi bagaimana caranya? Juga, ada banyak file, dan jika file terakhir gagal itu tidak akan menjadi pilihan yang baik menjaga seluruh file yang berhasil ditransfer.
Mungkin ada sesuatu selain SCP?
sumber
-e ssh
adalah standar implisit selama bertahun-tahun sekarang, biasanya tidak perlu lagi menggunakan parameter ini.smv() { rsync -az --remove-source-files "$@"; }
ke kotak alat saya. Terima kasih.Gunakan
rsync
alih-alihscp
:Info lebih lanjut dengan
man rsync
.sumber
Pertanyaan ini sudah dijawab dengan baik, dan jawabannya diterima, tetapi karena itu melayang ke bagian atas halaman depan, saya pikir saya setidaknya akan mencoba untuk menjawabnya lebih tepat, jika kurang elegan. Ya, Anda dapat menggunakan kode pengembalian dari
scp
, dan saya sering melakukannya. Dalambash
:Saya mengambil poin Anda tentang banyak file untuk menyalin dan menangani kegagalan ke tumpukan dengan benar, jadi untuk beberapa file:
Yang terakhir ini hanya praktis jika Anda menggunakan
ssh-agent
, tetapi saya sangat berharap Anda melakukannya.sumber
-l
flag. Misalnya,-l 8192
untuk membatasi transfer pada 8192 kb / sdalam situasi saya, port ssh bukan 22, jadi
bekerja untukku.
sumber
jika Anda memiliki server target yang lebih lama seperti saya, Anda tidak dapat menggunakan
tetapi Anda harus menggunakan
sebagai gantinya.
sumber
Jika melakukannya dalam dua langkah bukan masalah, Anda dapat menggunakan
scp
untuk menyalin file dari server jauh, dan kemudian jalankanssh -e "rm /path/to/file"
untuk menghapus dari disk. Ketika memindahkan file terutama di antara mesin, ada yang salah, jadi mungkin baik untuk melakukan penyalinan dan menghapus secara terpisah, dan hanya menghapus file ketika Anda tahu pasti telah berhasil disalin terlebih dahulu.sumber