Soru Dizinleri tekrarlı olarak kopyalayabilir misiniz?


Şu anda sadece bir tane kopyalayabilirim .tar dosya. Ama dizinleri nasıl yinelemeli olarak kopyalayabilirim scp?


520
2018-04-29 04:24


Menşei




Cevaplar:


Evet, kullan -r:

scp -rp sourcedirectory user@dest:/path
  • -r tekrarlayıcı anlamına gelir
  • -p, değişiklik dosyalarını, erişim sürelerini ve orijinal dosyadaki modları korur.

Not: Bu oluşturur sourcedirectory içeride /path Böylece dosyalar içinde olacak /path/sourcedirectory


841
2018-04-29 04:28



Ancak bunun akıllarını korulamayacağını aklınızdan çıkarmayın. - CpnCrunch
Bunu not et -pr (ters sıradaki seçenekler) klasörleri kopyalamaz, daha çok içeriğini hedef dizine ekler (görünüşte, seçeneklerin sırası önemlidir). - pms
Bazı sebeplerden dolayı /path göreceli olarak görünür users $HOME - olmadan nasıl mutlak hale getiririm root@? - Jonathan
Evet, SCP dosyaları istediğim yere koymuyor. Çoğu zaman bir dizini değiştirmeye çalışırken, bunun yerine aynı ada sahip başka bir dizinde yer alırım. Buna fazladan dikkat ediyorum. - sudo


Önceki cevaplar teknik olarak doğru olsa da, kullanmayı da düşünmelisiniz rsync yerine. rsync Gönderen ve alan taraftaki verileri bir fark mekanizması ile karşılaştırır, böylece daha önce gönderilmiş olan verileri yeniden göndermesi gerekmez.

Uzak makineye bir kereden fazla bir şey kopyalayacaksanız, rsync. Aslında, kullanmak güzel rsync her seferinde dosya izinleri ve sahiplik kopyalamak ve belirli dosya veya dizinleri hariç tutmak gibi şeyler için daha fazla denetime sahip olduğu için. Genel olarak:

$ rsync -av /local/dir/ server:/remote/dir/

yerel bir dizini uzak bir dizinle senkronize eder. Bunu ikinci kez çalıştırırsanız ve yerel dizinin içeriği değişmediyse, hiçbir veri aktarılmayacaktır - çalışmaktansa çok daha verimli scp ve her zaman her şeyi kopyalamak.

Ayrıca, rsync Kesintisiz transferinden çok kolay bir şekilde kurtarmanıza izin verir, aksine scp.

Son olarak, modern versiyonları rsync varsayılan olarak ssh üzerinde çalışır, yani scp zaten çalışıyor rsync hemen hemen yerine bir drop-in değiştirilmesi gerekir.


149
2018-04-29 05:11



Elbette, neyin değişip değişmediğini tam olarak belirlemek için gerekli olan veriler hariç, "hiçbir veri aktarılmayacaktır". - thsutton
Evet, bunu biraz açıkca söyledim. Burada kuantum dolaşımını konuşmuyoruz. - Phil Hollenback
Osx, win7 ve ubuntu bile henüz GUI için rsync gibi bir şey kullanmaz çok üzücü. - cregox
dmourati Onun sorusuna cevap verdim. Ona bunu yapmanın daha iyi bir yolunu söyledim. - Phil Hollenback
@raphnguyen: Hayır, yerel dizindeki dosyaları silmek onları uzak dizinden silmez. Bu davranışı --delete rsync seçeneği. - Phil Hollenback


Bu ne -r seçenek içindir. :)

Bakın scp man sayfası gerekirse daha fazla bilgi için.


30
2018-04-29 04:27





Yinelemeli Kopyalama Seçeneği '-r' (küçük harf)

scp -r

Ben normal yerel özyinelemeli kopyalama seçeneği '-R' ile karıştırıyorum (büyük harf)

cp -R

9
2017-09-11 17:53



Ben sadece cp ve scp -r ve -R arasındaki farkın aynı olmadığını belirtmek istedim. unix.stackexchange.com/questions/18712/... - Tarun


En iyi yol, SSH üzerinde rsync kullanmaktır

rsync -a -essh /source/ user@dest-server:/dest/

rsync -a -essh user@source-server:/source/ /dest/

Favori seçeneklerim -Pazvessh --delete:

  • -a: arşiv modu (sembolik bağlantıların korunması da dahil olmak üzere birçok ortak seçenek içerir)
  • -z: sıkıştır
  • -v: verbose: dosyaları göster
  • -P: dosyalar / kalan dosyalar olarak progess göster
  • -e ssh: ssh protokolünde rsync yap
  • --delete: kaynakta artık bulunmayan hedefteki dosyaları silin

4
2017-11-05 18:33



Tüm sürümleri rsync kullanmış olduğum ssh varsayılan olarak -essh gerekli olması muhtemel değildir. Ve uzak ana bilgisayara bağlanmak için kullanılan komut seçimi, yinelemeli kopyalama için gerçekten ilgisizdir. - kasperd


Ardışık kopya bayrağını aradıktan sonra, bu yazı sayesinde başarıyla kullandım, sadece bir öneride bulunmak istiyorum.

Eğer durum bir dizini kopyalıyorsa (yinelemeli). Belki dosyalar sıkıştırılmış olarak gönderilirse transferde zaman kazanabilirsiniz

Sonunda yaptığım şey şuydu:

local$ tar -czvf local.tar.gz directory/
local$ scp local.tar.gz user@remote:/directory
ssh user@remote
remote$ tar -xzvf local.tar.gz

Bu yardımcı olur umarım


3
2018-06-06 18:00



dosya uzantısı ya .tar.gz veya .tgz dosya gzipped tar arşiv olduğundan ( -z bayrak kullanılır). - anthonybell


Bu basit komutla bir dizini sıkıştırılmış bir arşive kopyalayabilirsiniz:

ssh -p 22 user@address-to-copy-from.com  'cd /parent/directory && tar zcvf - directory_to_copy' > /destination/on/your/machine/archive_name.tgz

Örneğin, içeriğini kopyalamak için /var/log itibaren domain.com için ~/logs.tgz koştun:

ssh -p 22 user@domain.com  'cd /var && tar zcvf - log' > ~/logs.tgz

Boruları kullanarak dosyaları hedef sistemde de ayıklayabilirsiniz. Bu komut içeriğini kopyalayacak /var/log en domain.com için ~/destination/log sisteminizde:

ssh -p 22 user@domain.com  'cd /var && tar zcvf - log' | tar xzf - -C ~/destination

Bir dizini yansıtmasına rağmen, muhtemelen rsync...


1
2018-01-06 07:20





Kullanıcının şifresini etkileşimli olarak girmek yerine bir parametre olarak geçirmeyi tercih ederseniz, sshpass(sudo apt-get install -y sshpass).

Örnek:

sshpass -p 'remote_password' scp -rp /src/folder myremoteusername@122.10.12.123:/dest/folder

0
2018-01-06 06:49