(Büyük) bir dizini yalnızca farklı dosyaları değiştirerek başka bir dizine nasıl kopyalayabilirim?


14

A dizinim ve b dizinim var. Onlar büyük. b, a ile hemen hemen aynıdır. "neredeyse", 4-5 dosyanın farklı olduğu anlamına gelir ve bunların hangileri olduğunu bilmiyorum. B'yi a'nın üzerine kopyalamak istiyorum, ancak yalnızca farklı dosyalar. Ben bashtayım.

(hayır, basitçe bir silemez ve b ile değiştiremem, çünkü 1) a sürüm kontrollü 2) tam kopya (veya mv) çok fazla zaman alır. Yalnızca farklı dosyaları kopyalamak istiyorum).


rsyncbir seçenek?
Bobby

Öyle, ama rsync hakkında fazla bir şey bilmiyorum.
janesconference

Yanıtlar:


17

Bunu rsyncyapmak için kullanabilirsiniz, kullandığım komutrsync -tr "folder to copy from" "folder to copy to"

Örneğin rsync -tr /home/me/stuff/* /home/me/otherstuff/


1
Bu komutun DİKKAT EDİN. Farklı olmayacak tüm dosyaları silecektir. Ben koştu ve neredeyse her şeyi KAYIP!
Arvind K.

@Arvind Verilerinizi kaybetmenize neden olan hangi komutu kullandığınızı bilmiyorum ama rsync -tr değildi. Kılavuz sayfasını okuyun.
Tog

18

Bunu iyi eskilerle yapmak da mümkündür cp:

Kullanmamı hatırlattığı için srcspider'a teşekkürler -T!

cp -ruT old-dir new-dir


+1 Makineler arasında senkronizasyon yapmaya çok alışkınım Zarif yolları unutuyorum.
Tog

benim için çalışmıyor :(
janesconference

Bu aslında iyi gnu cp. ;-)
Keith

1
OS X'te -u seçeneği yoktur. Tarihleri ​​karşılaştırmak zorunda olmadığım için basitçe cp -r old-dir new-dir kullandım.
Jean-François Beauchamp

Çalışmıyor. Bu bir isim kuralı olup olmadığından emin değilim ama cp -ru klasör-A klasör-B basitçe klasör-A klasörü-B kopyalar A içindeki içeriği B kopyalamak ve üzerine yazmak, istenen etkisi olurdu.
srcspider

1

Başka bir iyi seçenek Unison'dur ( http://www.cis.upenn.edu/~bcpierce/unison/ ), özellikle de gerçekten bir "kaynak" ve "hedef" yoksa. Her dizin bir köktür ve Unison bunları senkronize eder ve gelecekteki senkronizasyonlar için meta verileri tutar. Hem komut satırı hem de cron üzerinden kolayca programlanabilen bir GUI seçeneği sunar.

Dropbox'ımı bir Dropbox istemcisi çalıştıramayan yerel NAS cihazıma yedeklemek için kullanıyorum.


1

Yukarıda belirtilenden biraz farklı bir formatta olsa da, iyi ol 'cp ile yapılabilir. İşte böyle yaptım:

cp -ru --target-directory="destination_path" source_path/*

1

2 dizini ayırabilirsiniz.

diff -r dir1 dir2

size difernet olan dosyaların listesini gösterecektir.

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.