sftp: bir klasörde bulunan tüm dosyaları, dizinleri ve alt dizinleri yükle


27

AI makinesinde klasör var

/home/a/

Makine BI'da klasöre sahip

/home/b/

Tüm dosyaları, dizinleri ve / home / a / in / home / b alt dizinlerini sftp ile transfer etmek isterim. Makinede AI komutları denedi:

sftp fibon82@machineB.com
put /home/a/* /home/b/

ancak çalışmazsa, şu hata mesajını alıyorum: "normal olmayan dosya / home / a / a1 atlanıyor" ... [a1 a'nın bir alt dizinidir]
Koyma talimatını nasıl değiştirebilirim?

Teşekkürler! :)

DÜZENLE:

Scp kullanarak çözdüm:

scp -r /home/a/ fibon82@machineB.com:/home/b/

2
put -rçok işe yarayacaktı.
WakiMiko

1
Tamam, ancak "put command" için -r seçeneğinin uygun olduğunu nasıl bilebilirim? Ben bakarsak burada sadece bayrak -P aynı ... anlatılmıştır manuel teşekkür! :)
fibon82

Bunun yerine bir cevap olarak göndermelisin.
NN

Evet. Sorunuzu yanıtla DÜZELTMEK yerine, kendi sorunuza cevap vermeli ve kabul etmelisiniz.

@ fibon82 OpenSSH'nin güncel el kitabı sftpiçin, OpenSSH projesine bakın .
Martin Prikryl

Yanıtlar:


21

Sftp ile kesinlikle eşdeğer olmasa da, rsync , özellikle kopyaları A makinesinden B makinesine güncellerken, değiştirilmemiş dosyaları kopyalamadığı için scp ve sftp için çok güçlü bir alternatiftir; Ayrıca, A makinesinden silinmiş B makinesindeki dosyaları da kaldırabilir (yalnızca elbette söylendiğinde).

Senin durumunda, sözdizimi

rsync -zrp /home/a/ user@remote.host.com:/home/b/

Bu -rseçenek, dosyaları tekrar tekrar kopyalamak içindir -z, aktarım sırasında sıkıştırmayı etkinleştirir ve kopyalama sırasında -pdosya izinlerini (dosya oluşturma, düzenleme vb.) Korur, bu da scp'nin AFAIK yapmaması gereken bir şeydir. Daha birçok seçenek mümkündür; her zamanki gibi mansayfaları oku .


Ah teşekkürler! :) Öğrendiğim yeni bir şey!
fibon82

@ fibon82: Bir şey değil :)
Karolos

1
Seni seviyorum, sadece kodunuzu kullanarak 1 dakika içinde 400 MB veriyi senkronize ettim. Ayrıca şunu da eklemeliyim ki - ilerlemem aksi halde ne olup bittiğini bilmeden hiçbir şeye bakmayacaksın (ve hangi hızda :))
Sandro Antonucci

1
Ne yazık ki rsyncbilmiyor sftp-Protokolü. Yani bir ayarlarsanız sftpkullanarak -chroot sshiçinde 'nin yapıinternal-sftp daha sonra rsyncbaşarısız olur.
Tino

17

Gelen sftpbu komutla yinelemeli uzak geçerli dizine geçerli dizinin içeriğini yükler:

 put -r .

Bakın man sftp.


-rAnahtar beri destekleniyor OpenSSH 5.4 sadece.
Martin Prikryl

1
-rAnahtarın yalnızca istemci tarafı olduğuna dikkat edin ( sftpkomutun bir parçası ). Bu yüzden sunucu (burada: alma) tarafının OpenSSH 5.4'e ihtiyacı yoktur, yalnızca müşterinin onu desteklemesi gerekir.
Tino

9

scp(güvenli kopya), dosyaları güvenli bir tünel üzerinden aktarmak için kullanılan bir Linux sürümüdür. Senin durumunda, özyinelemeli anahtarı kullanmak istersiniz, örneğin:

scp -r /home/a/ user@remote.host.com:/home/b/

5
sftp ve scp aslında her ikisi de ssh'ye dayanan farklı protokollerdir.
paradroid

1
Evet, sunucu sadece sftp protokolüne izin veriyorsa, bu cevap işe yaramaz.
рüффп

4

Kullanmayı deneyin

put -r /home/a/ /home/b/

daha fazla bilgi için göz atın: bu


1
-rAnahtar beri destekleniyor OpenSSH 5.4 sadece.
Martin Prikryl

-rAnahtarın yalnızca istemci tarafı olduğuna dikkat edin ( sftpkomutun bir parçası ). Bu yüzden sunucu (burada: alma) tarafının OpenSSH 5.4'e ihtiyacı yoktur, yalnızca müşterinin onu desteklemesi gerekir. Ve: Bu, kabul edilen bir cevap olmalıdır , çünkü rsyncetiketlenmiş bir sorunun cevabı olarak (muhtemelen desteklenmeyen) sftpbiraz kafa karıştırıcıdır.
Tino

0

Aslında, koymak -r çalışması gerekir. Ancak, hedef klasörün uzaktaki ana makinenizde bulunması gerekir:

sftp> put -r sourcefolder
 Uploading sourcefolder/ to /user/folder
 Couldn't canonicalize: No such file or directory
 ....
sftp> mkdir sourcefolder
sftp> put -r sourcefolder
 Uploading sourcefolder/ to /user/folder/sourcefolder
 Entering sourcefolder/
 sourcefolder/file1
 sourcefolder/file2

Ne yazdığınızı ve bu cevabın postadaki mevcut cevaplardan birinde yanıtlanmadığını onayladığınızı destekleyen referans ve kanıt eklediniz mi? Üzerinde Oku "Ben yorumuna 50 üne gerekiyor Neden" sağlamak için size yorum başlamak nasıl anlıyoruz.
Pezevenk Suyu BT

-1

Benim durumumda rsyncmümkün değildi, o yüzden kullandım:

mput -rp /home/a/ /home/b/

mputOpenSSH'da komut yok sftp. Belki bakın psftp?
Martin Prikryl
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.