dizin kopyalama için pv yoluyla ilerleme bilgileri


14

Çok büyük bir dizini kopyalamam gerekiyor (burada terabaytlarda konuşuyor) ve ilerlemeyi izlemek istiyorum.

Bunun pvgüzel bir yardımcı program olduğunu gördüm , ancak dizinleri özyinelemeli olarak kopyalamak için nasıl kullanabilirim? ( pv src > dstdizin olmadığı için çalışmaz)

PS: OS X Mountain Lion üzerinde çalışıyor, pvMac Ports'tan kuruldu

Yanıtlar:


21

kullanım rsync --progress [SRC] [DST]

man rsyncÇok kullanışlı seçenekler olduğu için sayfayı kontrol edin . -aarşiv için iyi bir başlangıç, ama kesin gereksinimlerinize bağlıdır.

Bir kanaldan kopyalama, özellikle dosya tabanlıysa, kopyalama işlemini gereksiz yere yavaşlatır.


Bir borudan kopyalamak neden işlemi yavaşlatacaktır? Borular tarafından sağlanan tamponlama ve borularla ilişkili çoklu görev, büyük olasılıkla yardımcı olacağımı söyleyebilirim. (ve rsync çok işlemlidir ve dahili olarak IIRC borular kullanır). Dosya tabanlı olmayan bir kopyalama işlemi nedir?
Stéphane Chazelas

Bash uygun, ancak hızlı değil. Özellikle bir komutu diğerine bağlarken.
jippie

@StephaneChazelas: Çünkü bir borunun tamponu sadece 8KB. Rsync gibi bir program çok daha büyük bir dahili arabellek kullanmak isteyebilir.
Zan Lynx

10

Sen kullanabilirsiniz tarya paxya cpio:

mkdir -p dst &&
  (cd src && tar cf - .) | pv -trb | (cd dst && tar xpf -)

1
Ayrıca, bir ekleyebiliriz viçin tardosya adlarını görmek için komutu.
peterph

Bu, kopyayı yapmadan önce kaynak klasörü sıkıştırır, değil mi? Klasörüm boyutu 5 TB, bu yüzden bunu yapmanın en iyi yolu olup olmadığından emin değilim? Ben gerçekten iyi bir ilerleme durumu gösterir gibi pv kullanmayı seviyorum, herhangi bir tavsiye lütfen?
Tak

@Tak, hayır sıkıştırma olmadığı için hiçbir şey sıkıştırmıyor. bir ilerleme göstergesini yazdırırken tar cf -diğerine dokunmadan besleyen bir borudan pv'ye beslenen dosyaları ve meta verilerini içeren bir akış çıkarır ve tardiğeri tarbu akıştaki verileri çıkarır. Her üç komut da eşzamanlı olarak çalışır ve verileri geldiği gibi işler, diskte depolanan hiçbir şey yoktur, boru tamponları ve komutların dahili tamponlarından başka bir şey yoktur, bu sadece birkaç kilobayta karşılık gelir.
Stéphane Chazelas

@ StéphaneChazelas Yorum için teşekkürler. Ben denedim ve işe yarıyor, tek şey ilerleme çubuğu soldan sağa doğru devam ediyor beklenen yüzdesi göstermiyor olmasıdır. Neden olduğu hakkında bir fikrin var mı? Bu parametrelerle pv kullandım -petra, genellikle çubuğun bitene kadar dolu kaldığı ilerleme çubuğunu gösterir. Cevabınızı da iptal ettim.
Tak

@Tak, pvne kadar veri aktaracağını bilmenin bir yolu yok. Bu miktarla ilgili bir tahmininiz varsa, bu -sseçenekle ona aktarabilirsiniz ( du -sb srcdosyalar yeterince büyükse GNU size iyi bir yaklaşım sağlar)
Stéphane Chazelas

2

Katran.

tar -cf - /var/log/ | pv | tar -C . -x

Misal:

# tar -cf - /var/log/ | pv | tar -C . -x
tar: Removing leading `/' from member names
58MB 0:00:05 [ 2.2MB/s] [                   <=> 

1

Dizinleri ilerleme bilgisiyle kopyalamak için bazı komutlar.


Çok sayıda küçük dosya varsa:

cp -av sourcedir targetdir | pv -l -s filecount > logfile

Bu, kopyalanan dosya sayısına göre ilerleme durumunu bildirir.

İhtiyacınız /dev/nullyoksa yönlendirebilirsiniz logfile.

Almak için aşağıdaki komutu kullanın filecount:

find sourcedir | wc -l

Birkaç büyük dosya varsa:

tar c sourcedir | pv -s size | tar x -C targetdir

Bu, kopyalanan baytlara göre ilerlemeyi rapor eder.

targetdir var olmalı.

Almak için aşağıdaki komutu kullanın size:

du -sh sourcedir

Rsync kullanmak istiyorsanız:

rsync -ai sourcedir/ targetdir/ | pv -l -s filecount > logfile

filecountYukarıda gösterildiği gibi alın .

Aynı sisteme kopyalama yapıyorsanız rsync -a, hemen hemen aynıdır cp -a. Rsync'in avantajları, ağ üzerinden kopyalama yaparken veya önceki bir kopyayı güncellerken (veya karşılaştırırken).

Daha fazla ayrıntı için buraya bakın:


0

du -b /directory/Normal bir kopyalama komutu devam ederken hem kaynakta hem de hedefte bir yapabilir ve ikisini karşılaştırabilirsiniz. Bu aynı derecede etkilidir ve bir borudan iterek kopyalama işlemini yavaşlatmaz.


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.