Android

Hvordan ekskludere filer og kataloger med rsync

Linux Commands for Beginners 24 - Transferring Files with rsync

Linux Commands for Beginners 24 - Transferring Files with rsync

Innholdsfortegnelse:

Anonim

Rsync er et raskt og allsidig kommandolinjeværktøy som synkroniserer filer og mapper mellom to steder over et eksternt skall.

Med Rsync kan du speile data, opprette inkrementelle sikkerhetskopier og kopiere filer mellom systemer. Når du kopierer data, kan det være lurt å ekskludere en eller flere filer eller kataloger basert på navn eller sted.

I denne opplæringen vil vi vise deg hvordan du ekskluderer filer og kataloger med rsync.

Før du begynner

Du bør ha en grunnleggende kunnskap om hvordan rsync fungerer.

I eksemplene nedenfor vil vi bruke rsync med alternativet -a . Dette forteller rsync til å synkronisere kataloger rekursivt, overføre spesielle og blokkere enheter og bevare symbolske lenker, endringstider, gruppe, eierskap og tillatelser.

Når du ekskluderer filer eller kataloger, må du bruke deres relative stier til kildekatalogen.

Det er to alternativer for å spesifisere filene og katalogene du vil ekskludere:

  • Fra en kommandolinje, bruk alternativet - --exclude en fil bruker du alternativet - --exclude-from .

Ekskluder en bestemt fil

For å ekskludere en spesifikk fil, passerer du den relative banen til filen til alternativet - --exclude .

I eksemplet src_directory/file.txt blir ikke filen src_directory/file.txt overført:

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

Utelat en spesifikk katalog

Å ekskludere en spesifikk katalog er det samme som å ekskludere en fil, bare pass den relative banen til katalogen til alternativet - --exclude som vist nedenfor:

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

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

Ekskluder flere filer eller kataloger

For å ekskludere flere filer eller kataloger, spesifiser bare flere - --exclude alternativer:

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

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

Hvis antallet filer og / eller kataloger du vil ekskludere er stort, i stedet for å bruke flere alternativer - --exclude , kan du spesifisere filene og katalogene du vil ekskludere i en fil og sende filen til - --exclude-from alternativ.

Kommandoen nedenfor gjør nøyaktig det samme som den ovenfor:

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

file1.txt dir1/* dir2

Ekskluder flere filer eller kataloger basert på et mønster

Med rsync kan du også ekskludere filer og kataloger basert på et mønster som samsvarer med fil- eller katalognavnet.

For eksempel å ekskludere alle .jpg filer du vil kjøre:

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

Det er lite vanskeligere å ekskludere alle andre filer og kataloger, bortsett fra de som samsvarer med et visst mønster. La oss si at du vil ekskludere alle andre filer og kataloger, bortsett fra filene som slutter med .jpg .

Et alternativ er å bruke følgende kommando:

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

Når du bruker flere inkluderer / ekskluder alternativet, gjelder den første samsvarsregelen.

  • --include='*.jpg' - Først inkluderer vi alle .jpg filer. --include='*/' - Da inkluderer vi alle kataloger i katalogen src_directory . Uten denne rsync vil bare kopiere *.jpg filer i øverste katalog. -m - Fjerner de tomme katalogene.

Et annet alternativ vil være å røre utdataene fra finnkommandoen til rsync:

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

  • -printf %P\\0\\n - vil fjerne src_directory/ fra filstien. --files-from=- - betyr bare å inkludere filene fra standardinngangen (filer som er sendt fra --files-from=- ).

Konklusjon

I denne opplæringen lærte du hvordan du ekskluderer filer og kataloger når du overførte data med Rsync. Det er mye mer å lære om Rsync på Rsync Brukerhåndbok side.

rsync terminal