Sadece “scp” komutunu kullanarak yeni dosyalar nasıl kopyalanır?


24

Hatayıscp aldığım komutu kullanarak yüzlerce dosyayı başka bir bilgisayara kopyalıyordum . Şimdi dosyaları tekrar kopyalayacağım. Zaten kopyalanan dosyaları kopyalamaktan kaçınmanın bir yolu var mı?stalled

Yanıtlar:


40

Bunun için kullanabilirsiniz rsync. rsyncBu tür bir işlem için gerçekten tasarlanmıştır.

Sözdizimi:

rsync -avh /source/path/ host:/destination/path

veya

rsync -a --ignore-existing /local/directory/ host:/remote/directory/

İlk çalıştırdığınızda tüm içeriği kopyalar, sonra sadece yeni dosyaları kopyalar.

Trafiği bir SSH bağlantısı (örneğin, gizlilik amaçları için) yoluyla, başlangıçta bir SCP tabanlı çözüm istediğinizi belirttiğiniz gibi tünellemeniz gerekiyorsa, sadece -e sshparametreleri ekleyin rsync. Örneğin:

rsync -avh -e ssh /source/path/ host:/destination/path

--ignore-existinggerçekten gerekli?
Meysam

Manuel bu örnekte Çünkü: rsync -t *.c foo:src/-> "Bu desen * makine foo dizin src dizinine gelen .c ile eşleşen tüm dosyaları olacaktır. Dosyalardan herhangi biri zaten o uzak sistemde rsync Remote- üzerinde varsa güncelleme protokolü dosyayı yalnızca farkları göndererek güncellemek için kullanılır "
Meysam

1
Genelde kullanırım rsync -avuzh /source/path/ host:/destination/path. Bu, tüm işi tek bir komutta yapar ve sonraki çağrılarda, yalnızca ihtiyacı olan dosyaları aktarır.
Edward Falk

6

Herhangi bir nedenden dolayı scp'ye bağlı kalmak istiyorsanız , yerel verilerinizdeki w izinlerini kaldırabilirsiniz (bunu yapma hakkınız varsa) ve scp dokunmaz. Daha kesin olmak gerekirse:

  1. chmod a-w local/*.tar.gz (yerel direktörünüzde)
  2. scp remote/*.tar.gz local

Bu çok verimli değil, hoş ama scp'den başka bir şeye değiştirmeden hızlı bir geçici çözüme ihtiyacınız varsa yardımcı olabilir. (Kudos: Hedefdeki mevcut dosyaları değiştirmeden scp )


Bu çözümü gerçekten beğendim. Uzak sensörlerden bir arşive dosya topluyorum. Tüm çalışma dizinleri - her biri bir arşiv alt dizinine sahiptir. Dosyalar bir kez Arşive girdiğinde asla değişmeyecekler. Arşivlenmiş dosyaları -w olarak işaretlemek gerçekten kolay olurdu, bu yüzden yaptığım şey bu olacak. Ve arşiv dosyaları dışındaki çalışma dosyaları olduğu gibi bırakılabilir, bu nedenle güncelleme programını gün içerisinde çalıştırırsam devam eden dosyaları kopyalayacaktır. Bu tam olarak aradığım şeydi. TNX çok!
SDsolar

4

SCP ile bunun nasıl yapılacağına dair kesin bir cevap yoktu, çünkü asıl sorunun sorduğu şey buydu.

sudo find /files/ -type f -exec chmod a-w {} \;

scp -r username@server.com:/file/location/* /files

Dosyaları kopyalamayı tamamladığınızda izinleri geri değiştirin:

sudo chmod a+w -R /files


1
Muhtemelen, asıl soru “rsync'in cevabı olduğu“ bu problemi nasıl çözebilirim ”idi.
Edward Falk
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.