Pada mesin AI memiliki folder
/home/a/
Pada mesin BI memiliki folder
/home/b/
Saya ingin mentransfer semua file, direktori dan sub-direktori dari / home / a in / home / b dengan sftp On machine AI mencoba perintah:
sftp [email protected]
put /home/a/* /home/b/
tetapi tidak berhasil, saya mendapatkan pesan kesalahan: "melewatkan file tidak biasa / home / a / a1" ... [a1 adalah sub-direktori dari a]
Bagaimana saya bisa memodifikasi instruksi put?
Terima kasih! :)
EDIT:
Saya dipecahkan menggunakan scp:
scp -r /home/a/ [email protected]:/home/b/
put -r
akan bekerja juga.sftp
, lihat proyek OpenSSH .Jawaban:
Meskipun tidak sepenuhnya setara dengan sftp, rsync adalah alternatif yang sangat kuat untuk scp dan sftp, terutama ketika memperbarui salinan dari mesin A ke mesin B, karena tidak menyalin file yang belum diubah; itu juga dapat menghapus file dari mesin B yang telah dihapus dari mesin A (hanya jika disuruh tentu saja).
Dalam kasus Anda, sintaksnya adalah
The
-r
pilihan adalah untuk rekursif menyalin file,-z
memungkinkan kompresi selama transfer, dan-p
mempertahankan hak akses file (file penciptaan, mengedit, dll) ketika menyalin, yang merupakan sesuatu yang scp tidak melakukan AFAIK. Banyak lagi opsi yang dimungkinkan; seperti biasa, bacaman
halamannya.sumber
rsync
tidak berbicara-sftp
Protokol. Jadi jika Anda mengatursftp
-chroot menggunakanssh
build ininternal-sftp
makarsync
gagal.Dalam
sftp
perintah ini mengunggah konten direktori saat ini secara rekursif ke direktori remote saat ini:Lihat
man sftp
.sumber
-r
switch didukung karena OpenSSH 5.4 saja.-r
sakelar hanya sisi klien (bagian darisftp
perintah). Jadi sisi server (di sini: menerima) tidak perlu OpenSSH 5.4, hanya klien yang perlu mendukungnya.scp
(salinan aman) adalah Linux de facto untuk mentransfer file melalui terowongan yang aman. Dalam kasus Anda, Anda ingin menggunakan sakelar rekursif, misalnya:sumber
Coba gunakan
untuk info lebih lanjut, periksa: ini
sumber
-r
switch didukung karena OpenSSH 5.4 saja.-r
sakelar hanya sisi klien (bagian darisftp
perintah). Jadi sisi server (di sini: menerima) tidak perlu OpenSSH 5.4, hanya klien yang perlu mendukungnya. Dan: Ini harus menjadi jawaban yang diterima , karena mendapatkan (yang mungkin tidak didukung)rsync
karena jawaban atas pertanyaan yang ditandaisftp
agak membingungkan.Sebenarnya, put -r harus bekerja. Tetapi folder destintion harus ada di host jarak jauh Anda:
sumber
Dalam kasus saya
rsync
tidak mungkin jadi saya menggunakan:sumber
mput
perintah di OpenSSHsftp
. Mungkin Anda merujukpsftp
?