Saya menjalankan scp dan menyalin folder dari server jauh, saya menjalankan dengan -rl, jadi saya melihat file-file tersebut sedang disalin, apakah mungkin melewatkan file saat ini?
Saya menjalankan scp dan menyalin folder dari server jauh, saya menjalankan dengan -rl, jadi saya melihat file-file tersebut sedang disalin, apakah mungkin melewatkan file saat ini?
Jawaban:
Tidak, kamu tidak bisa. Tapi Anda bisa berhenti scp
dan menggunakannya rsync
. Ini hanya akan menyalin perbedaan yang tersisa dari salinan sebagian dan Anda dapat mengecualikan file atau dir yang tidak ingin Anda transfer.
rsync -avP -e ssh --exclude=somefile --exclude=somedir ./localdir/ user@server:remotedir/
Tidak, tidak dengan -r
atau sintaks lain yang melakukan beberapa transfer file dalam satu scp
perintah.
Yang mengatakan, scp
juga mengikuti paradigma UNIX: menulis program yang menyediakan fungsionalitas yang sederhana dan tepat yang dapat dirangkai bersama dengan cara yang menarik. Ini berarti akan ada kemungkinan untuk menulis sebuah loop yang interaktif melakukan individu doa dari perintah, satu per file. Anda kemudian dapat keluar dari perintah individu saat sedang dijalankan. (Ctrl-C)
Kode untuk ini dibiarkan sebagai latihan untuk pembaca, tetapi kebutuhan untuk loop ini untuk dieksekusi dalam shell interaktif harus ditekankan. Keluar dari cangkang non-interaktif akan mengakhiri seluruh pekerjaan.
Ya kamu bisa!
Mari kita daftar direktori jarak jauh dan menyalin setiap file secara terpisah. Kemudian tekan ctrl-c untuk setiap file yang tidak ingin Anda salin:
OLD_IFS="$IFS"
IFS=$'\n'
for file in `ssh user@host ls /remote/directory/`
do echo user@host:/remote/directory/$file /local/directory/
done;
IFS="$OLD_IFS"
OLD_IFS ada di sini untuk menangani file dengan spasi di dalamnya.