Soru Büyük bir dizin ağacını yerel olarak kopyalamak mı? cp veya rsync?
Büyük bir dizin ağacını, yaklaşık 1,8 TB kopyalamalıyım. Hepsi yerel. Kullanmam gereken alışkanlık rsync
Ancak, çok fazla nokta olup olmadığını merak ediyorum ve kullanmam gerekirse cp
.
İzinleri ve uid / gid hakkında endişeleniyorum çünkü kopyada saklanmaları gerekiyor (rsync bunu biliyor). Symlinks gibi şeylerin yanı sıra.
Hedef boş, bu yüzden bazı dosyaları koşullu olarak güncellemekten endişelenmem gerekmiyor. Hepsi yerel disk, bu yüzden ssh veya ağ hakkında endişelenmenize gerek yok.
Rsync'ten uzak durmamın nedeni, rsync'in ihtiyacım olandan fazlasını yapabileceğidir. rsync checksums dosyaları. Buna ihtiyacım yok ve cp'den daha uzun sürebilir.
Peki ne düşünüyorsun rsync
veya cp
?
217
2017-07-20 14:36
Menşei
Cevaplar:
Rsync'i, herhangi bir nedenden dolayı kesintiye uğradığında, çok az maliyetle kolayca yeniden başlatabileceğiniz anlamına gelir. Ve rsync olarak, büyük bir dosyada kısmen yolunu yeniden başlatabilir. Diğerleri de belirtildiği gibi, dosyaları kolayca hariç tutabilir. Çoğu şeyi korumanın en basit yolu -a
bayrak - ‘arşiv.’ Yani:
rsync -a source dest
UID / GID ve symlinks korunmasına rağmen -a
(görmek -lpgo
), senin sorununun isteyebileceğini ima ediyor tam dosya sistemi bilgilerinin kopyası; ve -a
Sabit bağlantılar, genişletilmiş özellikler veya ACL'ler (Linux'ta) veya yukarıdakileri içermez ne de kaynak çatalları (OS X'te) Bu nedenle, bir dosya sisteminin sağlam bir kopyası için, şu bayrakları eklemeniz gerekir:
rsync -aHAX source dest # Linux
rsync -aHE source dest # OS X
Varsayılan cp yine başlayacak, ancak -u
bayrak olacak "yalnızca SOURCE dosyası hedef dosyadan daha yeni olduğunda veya hedef dosya eksik olduğunda kopyala". Ve -a
(arşiv) bayrağı, yeniden başlatmanız ve izinlerinizi saklamak zorunda olmanız durumunda, recopy dosyaları değil, özyinelemeli olacaktır. Yani:
cp -au source dest
188
2017-07-20 14:40
Yerel dosya sistemine kopyalama yaparken her zaman aşağıdaki rsync seçeneklerini kullanırım:
# rsync -avhW --no-compress --progress /src/ /dst/
İşte benim mantığım:
-a is for archive, which preserves ownership, permissions etc.
-v is for verbose, so I can see what's happening (optional)
-h is for human-readable, so the transfer rate and file sizes are easier to read (optional)
-W is for copying whole files only, without delta-xfer algorithm which should reduce CPU load
--no-compress as there's no lack of bandwidth between local devices
--progress so I can see the progress of large files (optional)
Yukarıdaki rsync ayarlarını kullanarak başka bir yanıtın önerdiği gibi aşağıdaki tar komutunu kullanarak% 17 daha hızlı aktarım gördüm:
# (cd /src; tar cf - .) | (cd /dst; tar xpf -)
89
2018-05-07 19:09
Çok miktarda veri kopyalamam gerektiğinde, genellikle katran ve rsync kombinasyonunu kullanırım. İlk geçiş, bunun gibi bir şey, bunun gibi bir şey:
# (cd /src; tar cf - .) | (cd /dst; tar xpf -)
Genellikle büyük miktarda dosya ile, katranın herhangi bir nedenden dolayı işleyemeyeceği bazı olacaktır. Ya da süreç kesintiye uğrayabilir veya bir dosya sistemi geçişi ise, ilk geçiş işlemini gerçek geçiş adımından önce yapmak isteyebilirsiniz. Herhangi bir oranda, ilk kopyadan sonra, hepsini senkronize etmek için bir rsync adımı yapıyorum:
# cd /dst; rsync -avPHSx --delete /src/ .
Sondaki eğik çizgi /src/
önemli.
78
2017-07-20 15:15
rsync
İşte kullandığım rsync, basit komutlar için cp'yi tercih ederim, buna değil.
$ rsync -ahSD --ignore-errors --force --delete --stats $SRC/ $DIR/
cpio
İşte daha güvenli bir yol, cpio. Katran kadar hızlı, belki biraz daha hızlı.
$ cd $SRC && find . -mount -depth -print0 2>/dev/null | cpio -0admp $DEST &>/dev/null
katran
Bu da iyi ve okuma başarısızlıklarına devam ediyor.
$ tar --ignore-failed-read -C $SRC -cf - . | tar --ignore-failed-read -C $DEST -xf -
Bunların hepsi sadece yerel kopyalar içindir.
13
2018-02-26 17:06
rsync -aPhW --protocol=28
RSYNC ile bu büyük kopyaları hızlandırmaya yardımcı olur. Ben her zaman rsync'e gidiyorum çünkü 90GiB ile ortada olma düşüncesi ve beni kırmak beni korkutuyor
6
2017-07-20 16:24
rsync
Komut her zaman transferleri her byte checksums hesaplar.
Komut satırı seçeneği --checksum
yalnızca hangi dosyaların transfer edilip edilmeyeceğini belirlemek için dosyaların toplamı olup olmadığını, yani:
-c, --checksum
mod-time & size değil, sağlama toplamına dayalı olarak atla "
Manpage de şunu söylüyor:
Rsync'in her aktarılan dosyanın tüm dosya sağlama toplamını denetleyerek alıcı tarafında doğru şekilde yeniden oluşturulduğunu doğruladığını, ancak aktarımdan sonra otomatik olarak aktarım onayının bu seçeneğin aktarımdan önce yapacağı bir şey olmadığını doğruladığını unutmayın. güncellenecek? " Kontrol.
Yani rsync
Ayrıca, her zaman, alıcı tarafındaki tüm dosyanın bir sağlama toplamını hesaplar. -c/ --checksum
seçenek "kapalı".
6
2017-11-28 01:20
Sen neyi tercih edersen. Sadece unutma -a
kullanmaya karar verdiğinizde geçin cp
.
Gerçekten bir cevaba ihtiyacınız varsa: rsync kullanayım çünkü daha esnek. Kopyalama tamamlanmadan önce kapatılması gerekiyor mu? Sadece ctrl-c ve arkana dönünce devam et. Bazı dosyaları hariç tutmanız mı gerekiyor? Sadece kullan --exclude-from
. Sahipliği veya izinleri değiştirmeniz mi gerekiyor? rsync bunu sizin için yapacak.
5
2017-07-20 14:40
rsync harika, ancak gerçekten büyük dizin ağaçları ile ilgili sorunları var, çünkü ağaçları hafızada saklıyor. Bu ipliği bulduğumda bu sorunu çözüp çözmeyeceklerini görmek istedim.
Ben de buldum:
http://matthew.mceachen.us/geek/gigasync/
Ayrıca ağacı el ile ayırabilir ve birden çok rsync'i çalıştırabilirsiniz.
5
2017-07-20 16:14
Bu iş parçacığı çok kullanışlıdır ve sonuca ulaşmak için pek çok seçenek olduğundan, bunlardan birkaçını ölçmeye karar verdim. Sonuçların başkalarına yardımcı olabileceğine inanıyorum, daha hızlı çalışmanın bir hissi var.
Taşımak 532Gb arasında dağıtılan veri 1,753,200 dosya o zamanlar vardı:
rsync
232 dakika sürdü
tar
206 dakika sürdü
cpio
225 dakika sürdü
rsync + parallel
209 dakika sürdü
Benim durumumda kullanmayı tercih ettim rsync + parallel
. Umarım bu bilgi, bu alternatifler arasından daha fazla insanın karar vermesine yardımcı olur.
Tüm kriter yayınlandı İşte
5
2018-05-11 19:14
Yerel bir yerel dizin kopyası yapılırken, benim deneyimim "cp -van src dest" rsync'den% 20 daha hızlıdır. Yeniden başlatılabilirlik açısından, "-n" nin yaptığı şey budur. Sadece kısmen kopyalanmış dosyayı çalıştırmanız gerekiyor. ISO ya da bunun gibi bir şey olmadıkça acı vermez.
2
2017-09-07 07:26
ARJ SO OLD SCHOOL IS! ARJ ve / veya rsync'in performans göstereceğinden şüpheliyim.
Kesinlikle her zaman yaptığım cpio kullanmak:
find . -print | cpio -pdm /target/folder
Bu CP'den neredeyse hızlı, kesinlikle katrandan daha hızlı ve herhangi bir şey borulamadan.
2
2017-09-09 04:09