2009-06-03 18 views
17

Bir zaman aralığı belirtmek mümkün mü, böylece rsync yalnızca son değiştirilen dosyalarda çalışır.Son bir dönemde değiştirilen dosyaları yedeklemek için rsync'i nasıl kullanabilirim?

SSH üzerinden yeni eklenen dosyaları yedeklemek için bir komut dosyası yazıyorum ve rsync verimli bir çözüm gibi görünüyor. Benim sorunum, kaynak dizinlerimin yedeklemede hiçbir ilgim olmadığı eski bir büyük dosya biriktirmesi içermesidir.

Şimdiye kadar rastladığım tek çözüm, --files-dosyası oluşturmak için ctime ile bir bulma işlemi yapmaktır. Bu çalışır, ancak desteklemeyen rsync sürümleriyle bazı eski yüklemelerle uğraşmak zorundayım. Modelleri aynı şekilde --include - oluşturmayı düşünüyorum ama daha zarif bir şey bulmayı çok isterim.

+0

sadece yeni veya değiştirilmiş dosyaları aktaracak. Bu rsync'in amacı. – lothar

+0

diğer seçenek rsync için görmezden listesine üzerine bu yolu koymak, böylece yedeklemek istemediğiniz dosyaları farklı bir yolu vardır dizin düzenini yeniden düzenlemek olacaktır. – lothar

+0

Ben Rsync'nin '-t' opsiyonun kullanılması önerecektim ama bu tam – Hasturkun

cevap

26
rsync'in için argümanlar içinde kabuk komutları belirtebilir gibi görünüyor

yüzden başarıyla rsync görünüyor dosyaları sınırlamak mümkün olmuştur at kullanarak

(Remote rsync executes arbitrary shell commands bakınız):

rsync -av remote_host:'$(find logs -type f -ctime -1)' local_dir 

Bu son günde değiştirilen tüm dosyaları (-ctime -1) arar ve sonra bunları local_dir içine rsyncs.

Bu özelliğin tasarım gereği olup olmadığından emin değilim, ancak yine de belgelere giriyorum.

+0

Sadece kullanıyorum bir veri alma komut dosyası için bu süper yararlı geldi bir satır bırakmak istedim. Teşekkür ederim! – Matthew

+1

Bunun için dikkat et; Eşleşen bir çok dosya varsa, gömülü bulmanın sonuçları, kabuğun komut satırı uzunluğu sınırında çalışabilir. Başıma geldi. – GaryO

+0

Bu, dizin yapısını koruyamayacak – carlosvini

1

Geçici bir dizin oluşturmaya, dosyalara simetrik bağlantı kurmaya veya sabitlemeye ne dersiniz?

2

Niçin tüm dizini bir kez yedekleyerek ve rsync ve rdiff ve kuzenleri tarafından sağlanan artımlı yedeklemeden yararlanarak ısıyı almıyorsunuz, çünkü onlar yedeklenecekleri disk alanını boşa harcamazsınız çünkü sürekli değişmeden

Her şeyi yedekleme daha basittir ve büyük ölçüde daha az hata riski vardır. Bazı dosyaları seçici olarak yedeklemeye çalışmak, başkalarına değil, fark etmeden ihtiyacınız olanı yedeklememek için bir reçete, daha sonra kritik bir dosyayı geri yükleyemediğinizde yanmaktır. Aksi halde, yedekleme dizininizde daha az 'karar verme' olması için kaynak dizininizi yeniden düzenlemelisiniz.

+0

Normalde hata riskini kabul ediyorum, ancak eski dosyalar için hiç bir zaman kullanmam (hiçbir zaman değişmeyecek kayıtlar ve diğer kayıtlar). Ben sadece ısıyı alırdım, ancak birkaç gigabaytlık istenmeyen bloatın indirilmesi ve düzenli olarak yeniden işlenmesi düşüncesi, bu soruyu ilk sırada sordu. Yeniden yapılanma muhtemelen çözümdür - mevcut yapıyı değiştiremiyorum ama Hasturkun'un önerdiği gibi geçici bir dizin oluşturabilirim. – Ken

+0

Benim için uzak konumdan yerel dosyalara aktarmak, dosyaları işlemek ve daha sonra eskileri (mtime +30) yerel alandan kazanmak için silmek istiyorum. Naif rsync bir dahaki sefere eskileri yeniden indiriyor çünkü artık yerelde kayıplar. – GaryO

1

Sana rsync bırakıp rdiff-yedekleme bakmak önerebilir miyim? Eğer diyoruz başlangıçtaki rsync dahaki sefere hallettikten sonra

+0

Teşekkür ederim. Bir bakacağım - daha önce baktım ama CIFS uyumluluk sorunu beni kapattı. (http://rdiff-backup.nongnu.org/FAQ.html#cifs) – Ken

İlgili konular