Android

Hur man utesluter filer och kataloger med rsync

Linux/Mac Terminal Tutorial: How To Use The rsync Command - Sync Files Locally and Remotely

Linux/Mac Terminal Tutorial: How To Use The rsync Command - Sync Files Locally and Remotely

Innehållsförteckning:

Anonim

Rsync är ett snabbt och mångsidigt kommandoradsprogram som synkroniserar filer och mappar mellan två platser över ett fjärrskal.

Med Rsync kan du spegla data, skapa inkrementella säkerhetskopior och kopiera filer mellan system. När du kopierar data kanske du vill utesluta en eller flera filer eller kataloger baserat på deras namn eller plats.

I den här tutorialen visar vi dig hur du utesluter filer och kataloger med rsync.

Innan du börjar

Du bör ha en grundläggande kunskap om hur rsync fungerar.

I exemplen nedan använder vi rsync med alternativet -a . Detta berättar rsync för att synkronisera kataloger rekursivt, överföra speciella och blockera enheter och bevara symboliska länkar, ändringstider, grupp, ägande och behörigheter.

När du undantar filer eller kataloger måste du använda deras relativa sökvägar till källkatalogen.

Det finns två alternativ för att ange de filer och kataloger som du vill utesluta:

  • Från en kommandorad med hjälp av --exclude - --exclude Från en fil med --exclude-from .

Uteslut en specifik fil

För att utesluta en specifik fil, skicka den relativa sökvägen till filen till alternativet - --exclude .

I följande exempel src_directory/file.txt filen src_directory/file.txt inte:

rsync -a --exclude 'file.txt' src_directory/ dst_directory/

Uteslut en specifik katalog

Att utesluta en specifik katalog är samma sak som att utesluta en fil, bara skicka den relativa sökvägen till katalogen till alternativet - --exclude som visas nedan:

rsync -a --exclude 'dir1' src_directory/ dst_directory/

rsync -a --exclude 'dir1/*' src_directory/ dst_directory/

Uteslut flera filer eller kataloger

För att utesluta flera filer eller kataloger anger du bara flera alternativ - --exclude alternativ:

rsync -a --exclude 'file1.txt' --exclude 'dir1/*' --exclude 'dir2' src_directory/ dst_directory/

rsync -a --exclude={'file1.txt', 'dir1/*', 'dir2'} src_directory/ dst_directory/

Om antalet filer och / eller kataloger som du vill utesluta är stort kan du istället för att använda flera alternativ - --exclude alternativ ange filerna och katalogerna som du vill utesluta i en fil och skicka filen till - --exclude-from alternativ.

Kommandot nedan gör exakt samma som ovan:

rsync -a --exclude-from='exclude-file.txt' src_directory/ dst_directory/ utesluta-fil.txt

file1.txt dir1/* dir2

Uteslut flera filer eller kataloger baserat på ett mönster

Med rsync kan du också utesluta filer och kataloger baserat på ett mönster som matchar fil- eller katalognamnet.

Till exempel för att utesluta alla .jpg filer som du skulle köra:

rsync -a --exclude '*.jpg*' src_directory/ dst_directory/

Det är lite svårare att utesluta alla andra filer och kataloger utom de som matchar ett visst mönster. Låt oss säga att du vill utesluta alla andra filer och kataloger utom de filer som slutar med .jpg .

Ett alternativ är att använda följande kommando:

rsync -a -m --include='*.jpg' --include='*/' --exclude='*' src_directory/ dst_directory/

När du använder flera inkludera / utesluta alternativet gäller den första matchningsregeln.

  • --include='*.jpg' - Först inkluderar vi alla .jpg filer. --include='*/' - Sedan inkluderar vi alla kataloger i src_directory i src_directory . Utan denna rsync kopieras bara *.jpg filer i den översta katalogen. -m - Tar bort de tomma katalogerna.

Ett annat alternativ skulle vara att leda utdata från find-kommandot till rsync:

find src_directory/ -name "*.jpg" -printf %P\\0\\n | rsync -a --files-from=- src_directory/ dst_directory/

  • -printf %P\\0\\n - tar bort src_directory/ från src_directory/ . --files-from=- - betyder bara filerna från standardinmatningen (filer som skickas från find-kommandot).

Slutsats

I denna handledning lärde du dig att utesluta filer och kataloger när du överför data med Rsync. Det finns mycket mer att lära sig om Rsync på Rsync Användarmanual-sida.

rsync terminal