Android

Sådan ekskluderes filer og mapper med rsync

Outlook to Gmail Migration Tool | Import Outlook Emails, Contacts, Calendar to Gmail

Outlook to Gmail Migration Tool | Import Outlook Emails, Contacts, Calendar to Gmail

Indholdsfortegnelse:

Anonim

Rsync er et hurtigt og alsidigt kommandolinjeværktøj, der synkroniserer filer og mapper mellem to placeringer over en ekstern shell.

Med Rsync kan du spejle data, oprette inkrementelle sikkerhedskopier og kopiere filer mellem systemer. Når du kopierer data, kan du måske ekskludere en eller flere filer eller mapper baseret på deres navn eller placering.

I denne tutorial vil vi vise dig, hvordan du ekskluderer filer og mapper med rsync.

Før du begynder

Du skal have en grundlæggende viden om, hvordan rsync fungerer.

I eksemplerne nedenfor bruger vi rsync med indstillingen -a . Dette fortæller rsync at synkronisere mapper rekursivt, overføre specielle og blokere enheder og bevare symboliske links, ændringstider, gruppe, ejerskab og tilladelser.

Når du ekskluderer filer eller mapper, skal du bruge deres relative stier til kildemappen.

Der er to muligheder for at specificere de filer og mapper, du vil udelukke:

  • Fra en kommandolinje ved hjælp af indstillingen - ekskluder. Fra en fil ved hjælp --exclude-from indstillingen - ekskluder --exclude-from .

Ekskluder en bestemt fil

For at ekskludere en bestemt fil skal du videregive den relative sti til filen til indstillingen - --exclude .

I det følgende eksempel overføres ikke filen src_directory/file.txt :

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

Ekskluder en specifik mappe

At ekskludere et specifikt bibliotek er det samme som at ekskludere en fil, bare videregive den relative sti til biblioteket til indstillingen - --exclude som vist nedenfor:

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

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

Ekskluder flere filer eller mapper

For at ekskludere flere filer eller mapper skal du blot specificere flere - --exclude indstillinger:

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 af filer og / eller mapper, du vil udelukke, er stort, i stedet for at bruge flere - --exclude indstillinger, kan du specificere de filer og mapper, du vil ekskludere i en fil og videregive filen til - --exclude-from mulighed.

Kommandoen nedenfor gør nøjagtigt det samme som den ovenfor:

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

file1.txt dir1/* dir2

Ekskluder flere filer eller mapper baseret på et mønster

Med rsync kan du også ekskludere filer og mapper baseret på et mønster, der matcher fil- eller katalognavnet.

For eksempel at ekskludere alle .jpg filer, du vil køre:

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

Det er lidt vanskeligere at ekskludere alle andre filer og mapper undtagen dem, der matcher et bestemt mønster. Lad os sige, at du vil ekskludere alle andre filer og mapper undtagen filerne, der slutter med .jpg .

En mulighed er at bruge følgende kommando:

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

Når du bruger indstillingen Flere inkluder / ekskluder, gælder den første matchende regel.

  • --include='*.jpg' - Først inkluderer vi alle .jpg filer. --include='*/' - Så inkluderer vi alle mapper i i src_directory biblioteket. Uden denne rsync kopieres kun *.jpg filer i biblioteket på øverste niveau. -m - Fjerner de tomme mapper.

En anden mulighed ville være at føre output fra find-kommandoen til rsync:

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

  • -printf %P\\0\\n - fjerner src_directory/ fra filstien. --files-from=- - betyder kun filer fra standardindgangen (filer, der er sendt fra find-kommandoen).

Konklusion

I denne tutorial lærte du, hvordan du ekskluderer filer og mapper, når du overfører data med Rsync. Der er meget mere at lære om Rsync på siden Rsync Brugermanual.

rsync terminal