Tüm alt dizinleri hariç tutabilir ancak rsync içindeki bir dizinin dosyalarını nasıl ekleyebilirim?


13

Ubuntu sistemimi yedeklemek istiyorum ve bakım için iki bölümüm var: Biri /, diğeri /home.

Muhtemelen yedeklemek isteyeceğim /. Bu o kadar da büyük değil, bu yüzden SD kartımda taşıyabilirim, beni bir görüntüye sahip olmak istemem için yeterince duyarlı olurum (bu yüzden şu anda rsync kullanmaya çalışıyorum).

Ve yaklaşık /home, ben hakkında çok ben büyük olasılıkla bunlardan içermez edeceğiz böylece umurumda değil birçok alt dizinleri vardır, ama ben böyle gibi orada dosyaların, ilgili dikkat çekmek istiyoruz .bash_history, .bashrc, .face, vb.

Bu yüzden dosyaları dahil ederken tüm alt dizinleri hariç tutmak istiyorum /home. Bunu nasıl başarabilirim?

--exclude "*/"çalışmadı. "/*/", "/**/", --include "*" --exclude */Bana istediğimi göstermez. en azından içindeki hiçbir şeyi kopyalamadan kaynak klasörü kopyaladı.

Yanıtlar:


17

Bu komutu deneyin:

rsync -a -f"- */" -f"+ *" /home/user/ destination/

man rsync

-f, --filter=RULE           add a file-filtering RULE

Tüm dosyaları dahil etme *ve dizinleri hariç tutma kuralı*/

Normal kopyayı kullanmak için başka bir yaklaşım cp

cp /home/usr/* /destination

yönlendirmeyi kullanarak dirs ile ilgili hatalardan kurtulabilirsiniz

cp /home/usr/* /destination 2>/dev/null

Bu sadece evinizdeki dosyaları dizinler olmadan kopyalar


/ proc sanal gerçek dışı bir dosya sistemine sahiptir, onu yedekten hariç
tutmalısınız

Bir şeyleri yedekleme konusundaki orijinal rsync -r -t -p -o -g -v --progress --delete --modify-window=1 -l -H -b -s --exclude home/dinir/ --exclude media/ --exclude proc/kcore / /home/dinir/Temporal Site for Storing Backups
komutum şöyleydi

/ proc, / tmp ve / run, Kontrol et! Her neyse, yorumumda gördüğünüz gibi, küçük istisnalar dışında ana dizini hariç tüm kök dosya sistemini yedeklemekti. -f" */" -f"+ *"Kodumu koymak güvenli olurdu ? Belki böyle olurdu -f"- home/dinir/*/" -f"+ home/dinir/*"?
Dinir

böyle kullanmalısınız-f"- home/dinir/*/" -f"+ home/dinir/*"
Maythux

ama eviniz için cp kullanmak için tavsiye, çok daha kolay
Maythux

3

Bunu --includeve --excludeparametreleri ile çözmek istiyorsanız , bunların sırasını değiştirmeniz gerekir: önce istediğinizi hariç tutun, ardından her şeyi ekleyin. Genellikle bu komutla yaparım:

rsync -vazhP path/to/source path/to/dest --exclude '*/*/' --include '*'

2

Varsayılan olarak rsyncdizinleri kopyalamaz. Belki de -abayrağı kullanıyorsunuzdur . Bu durumda, uygun olduğu ihbar adam sayfasına , -aeşdeğerdir -rlptgoDsen Recurse istemiyorsanız, bu yüzden, sadece kullanmak -lptgoD.


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.