sftp - yalnızca hedef klasörde bulunmayan klasördeki dosyaları kopyalama


19

getDosyaları ile mümkün olup olmadığını merak ediyorum sftp, ancak hedef klasörde zaten mevcut olan dosyaları yeniden indirmesini önlüyor musunuz?

Yanıtlar:


20

sftpsınırlı özelliklere sahiptir. Bununla birlikte, getkomutun hile yapabilen bir seçeneği vardır: get -akısmi indirmeleri tamamlar, bu nedenle bir dosya istemcide zaten mevcutsa ve en azından sunucudaki dosya kadar büyükse, indirilmez. Dosya mevcut ancak daha kısasa, dosyanın sonu aktarılacaktır, bu da yerel dosyanın kesintiye uğramış bir indirme işleminin ürünü olması anlamlıdır.

SFTP üzerinden karmaşık şeyler yapmanın en kolay yolu SSHFS kullanmaktır . SSHFS, uzak bir dosya sistemini yerel bir dosya olarak göstermek için SFTP kullanan bir dosya sistemidir. İstemcide, SSHFS çoğu modern birleşimde bulunan SİGORTA gerektirir . Sunucuda SSHFS, SFTP gerektirir; sunucu SFTP'ye izin veriyorsa, SSHFS'yi onunla kullanabilirsiniz.

mkdir server
sshfs server.example.com:/ server
rsync -a server/remote/path /local/path/
fusermount -u server

SSHFS üzerinden rsync'in, uzak taraftaki kısmi sağlama toplamlarını hesaplayamadığından delta aktarım algoritmasından yararlanamayacağını unutmayın. Bu bir defalık indirme için alakasızdır, ancak değiştirilmiş dosyaları senkronize ediyorsanız boşa gider. Değiştirilmiş dosyaların verimli senkronizasyonu için kullanın rsync -a server:/remote/path /local/path/, ancak bu sadece SFTP erişimi değil, SSH kabuk erişimi gerektirir. Kabuk erişimi rsync komutuyla sınırlandırılabilir.


7

-aBayrağı getkomut için kullanabilirsiniz :

$ sftp example.com
sftp> get -a hello.txt

*Elbette tüm dizini indirmeyi belirtebilirsiniz .

Ancak, birkaç uyarı var.

  • Bu OS X üzerinde çalışmaz. Diğer sistemlerde çalışmayabilir. Ubuntu 15.04'te test ettim.
  • Seçenek, kesintili indirme işlemlerine devam etmek içindir. Dosyanız değiştiyse, sonuç bozuk bir indirme olacaktır.

Daha iyi bir seçenek rsync:

rsync example.com:hello.txt

Bu, dosyayı her zaman sunucuda olduğu gibi verir, yalnızca yerel ve uzak kopya arasındaki farkları farklıysa aktarır ve evrensel olarak kullanılabilir.

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.