Saya menggunakan perintah scp shell untuk menyalin folder besar file.
Tetapi pada beberapa titik waktu saya harus mematikan perintah yang sedang berjalan (dengan Ctrl + C atau membunuh).
Untuk pemahaman saya scp file yang disalin secara berurutan, jadi seharusnya hanya ada satu file yang disalin sebagian.
Bagaimana perintah scp yang sama dapat dilanjutkan untuk tidak menimpa file yang berhasil disalin dan menangani file yang disalin sebagian?
PS Saya tahu saya bisa melakukan hal semacam ini di rsync, tetapi scp lebih cepat untuk saya karena alasan tertentu dan saya menggunakannya sebagai gantinya.
dd
denganskip
variabel yang tepat , dan pipa kessh
:)Typically, rsync is configured to use ssh by default
jadi ... seharusnya secepatnya (meskipun ia melakukan daftar direktori terlebih dahulu, yang mungkin memberikan awal yang lebih lambat)Jawaban:
Anda harus menggunakan
rsync
lebihssh
Opsi kuncinya adalah
-P
, yang sama dengan--partial --progress
Opsi lain, seperti
-a
(untuk mode arsip), dan-z
(untuk mengaktifkan kompresi) juga dapat digunakan.Manual: https://download.samba.org/pub/rsync/rsync.html
sumber
-r
. Sumber: lucasb.eyer.be/snips/rsync-skipping-directory.htmlrsync -P -rsh remoteuser@remotehost:/remote/path /local/path
Alternatif untuk rsync:
Gunakan
sftp
dengan opsi-r
(rekursif menyalin seluruh direktori) dan pilihan-a
darisftp
'sget
perintah 'melanjutkan transfer parsial dari file yang ada.'Prasyarat:
sftp
Penerapan Anda sudah memiliki opsiget
with-a
.Contoh:
Salin direktori
/foo/bar
dari server jauh ke direktori lokal Anda saat ini. Direktoribar
akan dibuat di direktori lokal Anda saat ini.sumber
echo "put -a foo/bar" | sftp -r server:/foo
Sejak OpenSSH 6.3, Anda dapat menggunakan
reget
perintah disftp
.Ini memiliki sintaks yang sama dengan
get
, kecuali bahwa ia memulai transfer dari akhir file lokal yang ada.Efek yang sama telah
-a
beralih keget
perintah atau saklar baris perintah global-a
`sftp .sumber
Kemungkinan lain adalah mencoba menyelamatkan scp yang sudah Anda mulai saat macet.
ctrl + z ke latar belakang dan hentikan, lalu ssh ke server penerima dan login, lalu keluar. Sekarang fg proses scp dan lihat resume dari 'terhenti'!
sumber
Anda dapat menggunakan opsi
-rsh
dan . untuk diunduh sebagian dan menunjukkan transfer sudah berakhir ssh procotol.-P
rsync
-P
-rsh
Perintah lengkapnya adalah:
rsync -P -rsh remoteuser@remotehost:/remote/path /local/path
sumber
Ketika rsync berhenti juga setelah beberapa detik ketika awalnya berjalan dengan baik, saya berakhir dengan solusi brute force berikut untuk memulai dan menghentikan memulai ulang unduhan setiap 60-an:
sumber
Saya mendapat masalah yang sama kemarin, mentransfer sampah sql besar melalui scp, saya beruntung
wget --continue the_url
Posting blog itu menjelaskannya dengan cukup baik http://www.cyberciti.biz/tips/wget-resume-broken-download.html pada dasarnya:
sumber