Rsync -avzHP bunları hardlink olarak kopyalamak yerine hardlinkleri takip eder


13

"İş" paylaşımımın saatlik / günlük / haftalık / aylık yedeklerini oluşturmak için rsnapshot kullanıyorum. Şimdi rsync kullanarak tüm yedekleme dizinini harici bir sürücüye kopyalamaya çalışıyorum.

Bu komutu / parametreleri bir ekran oturumu içinde kullandım (evet, rsync-exclude.txt komutu çalıştırdığım dizde yatıyor)

rsync -avzHP --exclude-from 'rsync-exclude.txt' /share/backup/ /share/eSATADisk1/backup/;

Her şey bir QNAP TS-439 üzerinde çalışıyor, dahili sürücü EXT4 şeklinde tek bir disk (RAID yok), harici sürücü EXT3 olarak biçimlendirildi.

Ne olur: Rsync, her sabit bağlantıyı izler ve güncellenen sabit bağlantıyı harici sürücüde yeniden oluşturmak yerine gerçek dosyayı kopyalar . Harici sürücüyü aynı dosyaların xxx kopyaları ile çöpe attı böylece hemen fark etmedim.

Ne elde etmek istiyorum: Yer kazanmak için sabitler tutarak rsnapshot tarafından oluşturulan tüm dosya yapısını harici sürücüye kopyalama. Not: Bu mutlaka rsync kullanılarak yapılmamalıdır.

Fikirleriniz ve zamanınız için teşekkürler. Yardımın için minnettar olurum, büyük zaman.

Güncelleme: rsnapshot'ın sembolik bağlantıları kullanmadığını öğrendim, bu yüzden hardlink kullanıyor, bu yüzden şimdi Rsnapshot'a göre hardlink yapısını korumak için -H seçeneğini kullanıyorum (veya sabit bağlantılar yapısını koruyorlar) ama yine de çalışmıyor ... burada ne eksik?

Güncelleme 2: Burada bu konuda başka bir görüş / ifade buldum: --hard-links ile rsync donuyor Steven Pazartesi hardlink içeren büyük dosya yapılarını rsync denememeyi önerir, çünkü çok fazla bellek emer ve rsync için zor bir görevdir. Muhtemelen daha iyi bir çözüm, yedeklemeye çalıştığım veri yapısının bir .imgini yapmak olacaktır. Ne düşünüyorsun?


Seninle aynısını yapıyorum! +1.
DD

Yanıtlar:


10

rsyncKomutunun -H(veya --hard-linksdosya sistemi bir kopyasını oluşturmak için bu koruyan orijinal sert bağlantılı yapısı:) seçeneğini teoride, sen kısaca, hangi başarmak için çalışıyoruz ne yapacağız. Ben de belirtildiği gibi başka benzer soruya cevabım , bu seçenek kaynak dosya sistemi sabit bağlantı karmaşıklık belirli bir eşiğin ötesinde büyüdükten sonra başarısız olmaya mahkûmdur.

Bu eşiğin kesin konumu RAM'inize ve sabit bağlantıların toplam sayısına (ve muhtemelen bir dizi başka şeye) bağlı olabilir, ancak tam olarak tanımlamaya çalışmanın bir anlamı olmadığını buldum. Ne gerçekten önemli eşik gerçek dünya durumlarda geçmeye tüm çok kolay olduğunu, ve bunu anlayamayacaksınız gelmiş gün bir çalıştırmayı deneyin gelene kadar, onu geçti rsync -aHveya cp -amücadeleler olduğunu ve sonunda başarısız .

Benim önerdiğim şudur: Ağır bağlantılı dosya sisteminizi dosya olarak değil, tek bir birim olarak kopyalayın. Yani, tüm dosya sistemi bölümünü büyük bir damla olarak kopyalayın. Bunu yapmak için birçok araç vardır, ancak en yaygın olanıdır dd.

Stok ürün yazılımı ile QNAP NAS'ınızın da ddyerleşik olması gerekir fdisk. İle fdisk, hedef sürücüde en az kaynak bölüm kadar büyük bir bölüm oluşturun. Ardından, ddyeni oluşturulan hedef bölümde kaynak bölümünüzün tam bir kopyasını oluşturmak için kullanın .

ddKopyalama işlemi devam ederken, hedef dosyada bozuk bir kopyayla karşılaşmayacak şekilde kaynak dosya sisteminde hiçbir şeyin değişmemesini sağlamalısınız. Bunu yapmanın bir yolu umount, kopyalama işlemine başlamadan önce kaynağa gitmektir; diğer bir yol da kaynağı salt okunur modda monte etmektir.


Asla rsnapshot backups dizini dışında sabit bağlantılar kullanmıyorum, yine de sorun yaşayacağım? Gerçekten sabit disk alanım yetersiz ama rsnapshot yedekleri yapmak istiyorum. Şu anda diskim doluyor.
Sridhar Sarnobat

Sanırım işaret ettiğin duruma çarptım. Ben rsync ile oluşturulan birçok anlık görüntüleri ile bir yedekleme dizini var. Birçok sabit bağlantı ile birçok dosya var. Toplam disk kullanımı yaklaşık 200G'dir. 'Rsync -avH' kullanarak başka bir bölüme kopyalıyorum. Ancak 4 (veya 5?) Gün ve gece sonra kopyalama işlemi devam ediyor. Sanırım rsync tamamen kaynak dizindeki sabit bağlantıların toplam sayısı ile karıştırılır.
Guangliang

Ubuntu 18.04'te --hard-links('s' ile).
nobar

1

-l sembolik bağlantılar için, neden hardlinkler için bir şey yapsın ki?

(Üzgünüm, bu bir cevap değil, bir yorum, henüz yorum haklarına sahip değilim ve bu cevap için bir yanıt gerekiyordu)

Yorum olması gereken başka bir not: tüm bu yerel donanım mı yoksa VM, ağa bağlı mısınız?

Düzenle

Neden hardlink kullandığınıza dair önceki yorumumu görmezden gel, rsnapshotyorumu kaçırdım .

İlk önce rsync'i iki yerel dizin yerel diski arasında, ardından uzak diskinize karşı test eden bir test yaptırmanız yararlı olacaktır. Bu küçük test, -Hbeklendiği gibi wokrs seçeneğini gösterir . İçin -iseçenek lsinode'ları gösterir, böylece ekstra kopya olmadan bağlantıların korunduğunu gösterir.

$ rsync -avzHP src/ dest
sending incremental file list
created directory dest
./
file111_prime.txt
           9 100%    0.00kB/s    0:00:00 (xfer#1, to-check=0/3)
file111.txt => file111_prime.txt

sent 156 bytes  received 59 bytes  430.00 bytes/sec
total size is 18  speedup is 0.08

$ ls -liR
.:
total 8
414044 drwxrwxr-x. 2 nhed nhed 4096 Feb 25 09:58 dest
414031 drwxrwxr-x. 2 nhed nhed 4096 Feb 25 09:58 src

./dest:
total 8
414046 -rw-rw-r--. 2 nhed nhed 9 Feb 25 09:57 file111_prime.txt
414046 -rw-rw-r--. 2 nhed nhed 9 Feb 25 09:57 file111.txt

./src:
total 8
414032 -rw-rw-r--. 2 nhed nhed 9 Feb 25 09:57 file111_prime.txt
414032 -rw-rw-r--. 2 nhed nhed 9 Feb 25 09:57 file111.txt

rsync -avzHP src/ host:/tmpUzak bir ana makineye yapılan bir sonraki test , hala sabit bağlantıları korudu


Tamamen haklısın, biraz daha araştırma yaptıktan sonra rsnapshot'ın sembolik linkler değil, hardlink kullandığını keşfettim. Sorumu buna göre güncelledim. Bu nedenle, çözüm -H kullanıyor olmalı ve rsnapshot tarafından oluşturulan hardlink yapısını korumak için tüm dizini kopyalamalıyım (yaptığım gibi) ama yine de çalışmıyor. Her şeyi günlük olarak kopyalamaya başladığımda. Sadece değiştirilen dosyaları değil, kopyalanıyor. // Ve evet, bu işlem için bir Qnap TS-439 ve harici bir Lacie Drive kullanıyorum.
woerndl

Bu sorunu, kaynakta sadece 2 dosya içeren bir test kaynak dizinine ve bir test hedef dizinine sabit bağlanmış olarak azaltabilir misiniz? Ayrıca, bağlantının doğru bir şekilde ele alınmadığını nasıl belirlersiniz ve son olarak, neden sabit bağlantılar kullanıyorsunuz, eğer -Hmanpagedeki uzun metni okursanız, bana söyleyeceğiniz birkaç uyarı olduğunu görebilirsiniz. uzak kalmak için uzak ...
nhed

Bir test vakası ayarlayacağım ve sizi güncel tutacağım. Şu ana kadar fikirleriniz için çok teşekkür ederim.
woerndl

1

Bu uzun bir çekimdir, ancak başka bir çözüm bulamazsanız USB sürücüsünü EXT4 olarak biçimlendirmeye çalışmanızı öneririm. Belki de sorun olabilir: https://bugzilla.samba.org/show_bug.cgi?id=7670

Bir kaynak klasörde yeterince sabit bağlantı ve yeterince küçük bir hedef birim göz önüne alındığında, rsync --hard-links ile kopyalama başarısız olabilir. Rsync, hedefte <...> maksimum sabit bağlantı sayısını tüketerek başarısız olur, asıl sorun rsync değil, temel dosya sistemi.


Sorunuma katıldığınız için teşekkürler! Görünüşe göre bu samba ile ilgili. Sürücüm doğrudan NAS'a bağlı.
woerndl

1
Merhaba, hayır bu sorun Samba ile ilgili değil. Burası rsync web sitesinin evi: rsync.samba.org
Motsel

0

-lSeçeneği eklemeyi denediniz mi?

Ben adam sayfası biliyorum diyor o dahil edildiğinden -aama adam sayfaları her zaman% 100 doğrudur.


Geri bildiriminiz için teşekkürler. Sorumu güncellemek zorunda kaldım: Rsnapshot sembolik bağlantıları kullanmıyor ancak artımlı yedekleme yapısını oluşturmak için hardlinks kullanıyor. Yani -her neyse yardım etmeyeceğim, ama -H maalesef işe yaramıyor.
woerndl
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.