/ / Hur man utesluter filer från Rsync

Hur man utesluter filer från Rsync

Rsync är ett av de mest användbara verktygen för en serveradministratör, men det synkroniseras allt som standard, vilket kan vara irriterande om din applikation skapar många tillfälliga filer. Så här exkluderar du filer när du använder rsync.

Utesluter från en lista i en fil

Detta är den idealiska metoden för att utesluta filer och mappar, eftersom du alltid kan redigera listan och justera saker vid behov. Här är syntaxen:

rsync --exclude-from=/path/to/exclusion-file /path/to/source /path/to/dest

Det svåra med rsync är att du behöveranvänd en relativ sökväg när du försöker utesluta saker, för när den försöker matcha uteslutningarna kommer den inte att använda den första delen av sökvägen för matchen ... det är konstigt.

Säg till exempel att du försöker säkerhetskopiera/ data / web / och skicka den till en annan server, så du använder ett kommando som rsync -a / data / web / user @ server: / säkerhetskopior / data / web / för att få det att hända ... men du skulle verkligen vilja hoppa över synkronisera / data / web / cache / mappen. När rsync går att kontrollera din uteslutningslista för varje objekt som det synkroniseras kommer det inte att kontrollera / data / web / cache / eftersom ditt ursprungliga rsync-kommando är baserat i / data / web / mappen. Det kommer bara att kontrollera "cache /" mot listan. Så du måste sätta "cache" i listan, inte hela banan. Exempel:

rsync -a --exclude-from=/data/exclusions /data/web/ /backups/

För att utesluta / data / web / cache och / data / web / temp från rsync med detta kommando, skulle vi ta bort / data / web / delen av sökvägen och filen / data / undantag skulle helt enkelt innehålla detta:

cache*
temp*

Du kommer att notera att jag har lagt till * i sökvägen tillse till att det matchar allt som börjar med "cache" i början. Du kan använda detta stjärnmönster av mer användbara skäl om du ville - säg att du vill utesluta att alla .txt-filer synkroniseras. Du börjar mönstret med stjärnan för att se till att alltid matchar och lägga till detta:

*.txt

Det skulle säkerställa att dessa typer av filer hoppas över under en synkronisering. Det är ganska enkelt utöver det.

Exklusive en enda artikel

Den här tekniken är mycket mindre användbar, men du kananvänd det i farten om du behöver. Om du ställer in ett skript för att använda rsync, som du vanligtvis är, bör du ta den extra minut för att utesluta från en fillista istället för att underlätta framtida underhåll. Syntaxen är mycket lik:

rsync --exclude=relative/path/to/exclusion /source /dest

Samma relativa väg bör gälla här som ovan.