Lanjutkan transfer scp rekursif (dengan rsync?)

14

Saya mentransfer beberapa ribu file masing-masing ~ 1MB melalui scp dan koneksi saya terputus setelah 2k file pertama atau lebih. Saya ingin tahu apakah ada cara untuk melanjutkan transfer rekursif tanpa memulai dari awal. Sesuatu seperti

$ scp -r [email protected]:/datafiles/ ./
... Happy Transfer ...
...     BREAK!     ...
$ rsync -P [email protected]:/datafiles/ ./
... Continue transf...

Masalahnya adalah saya sepertinya tidak bisa mendapatkan sintaks yang benar jika memungkinkan. Adakah yang bisa menjelaskan jika / bagaimana hal itu bisa dilakukan?

PS. Jika Anda menentukan slash setelah "datafiles" di baris rsync, apakah itu mentransfer direktori atau kontennya? Saya melihat komentar yang bertentangan ketika saya mencari di Google.

fisika michael
sumber

Jawaban:

10

jika Anda rsyncing dari mesin lokal ke host jarak jauh, ini akan berhasil:

rsync -avzl -e ssh /directory/with/files/ [email protected]:/new/directory/
Kemper
sumber
Terima kasih. Saya tidak berpikir ini berfungsi karena akan mulai mendaftar semua file saya, tetapi saya tidak menyadari bahwa itu menunjukkan "transfer file" yang hanya berarti memperhatikan file itu up to date. Benar adalah transfer saya tinggalkan itu diambil dengan transfer nyata (lebih lambat).
physicsmichael
Hmm, bagi saya ssh -i akey.pemdiperlukan dan saya tidak bisa mendapatkan -ibagian untuk bekerja dengan perintah-perintah ini.
isomorfisma
2
Jika Anda mencoba untuk melanjutkan file besar, pilihan ini mungkin berguna: --partial --inplace --no-whole-file.
Rafael Xavier
@kibitzer - setelah menunjukkan Anda file (di server jauh), bagaimana Anda memulai transfer lagi? Milik saya hanya membangun file daftar dan menunjukkan kepada saya file dan berapa banyak yang diunggah. Tapi itu hanya hang tanpa opsi untuk melanjutkan atau meningkatkan output. Sudahkah transfer dimulai lagi atau apakah saya perlu melakukan sesuatu untuk memulainya?
masterninja01
3
-ltidak perlu. Ini tersirat oleh-a
Guido
11

Baris berikut harus melakukan trik untuk itu:

rsync --partial --progress --rsh = ssh -r [email protected]: / datafiles / ./

Saya tidak pernah menggunakan ini untuk direktori rekursif sebelumnya, tetapi ketika saya mengirim sms itu sepertinya berfungsi seperti yang diharapkan.

Tyler
sumber
1
Ini juga berfungsi, selama Anda menyertakan -r =)
physicsmichael
Sebagian besar transfer rsync saya adalah tipe "rsync -ahP something / user @ host: / somewhere /". --Rsh = ssh sama sekali tidak perlu. Kemudian, juga -P menyeret dalam --partial dan --progress.
killermist
1

Perintah rsync yang Anda daftarkan akan berfungsi, jika Anda hanya menambahkan "-r". tetapi Anda juga kemungkinan besar menginginkan "-a" dan "-v".

Dan tentang trailing slash, [email protected]: / data / setara dengan / data / *, dengan kata lain, jika Anda menambahkan garis miring, ia menyalin semua konten. tapi [email protected]: / data akan menjadi direktori itu sendiri [dan tentu saja, subfoldernya]

Mat
sumber
1

Menggabungkan jawaban kibitzer dan Tyler bekerja paling baik untuk saya:

rsync --partial --progress -avzl -e ssh /directory/with/files/ [email protected]:/new/directory/

(rsyncing secara rekursif dan menunjukkan kemajuan setiap file)

Tarc
sumber