Android

Hoe bestanden en mappen uit te sluiten met rsync

How to transfer the files or directories using rsync command?

How to transfer the files or directories using rsync command?

Inhoudsopgave:

Anonim

Rsync is een snel en veelzijdig opdrachtregelhulpprogramma dat bestanden en mappen tussen twee locaties via een externe shell synchroniseert.

Met Rsync kunt u gegevens spiegelen, incrementele back-ups maken en bestanden tussen systemen kopiëren. Wanneer u gegevens kopieert, wilt u misschien een of meer bestanden of mappen uitsluiten op basis van hun naam of locatie.

In deze tutorial laten we u zien hoe u bestanden en mappen kunt uitsluiten met rsync.

Voordat je begint

Je moet een basiskennis hebben van hoe rsync werkt.

In de onderstaande voorbeelden gebruiken we rsync met de optie -a Dit vertelt rsync om mappen recursief te synchroniseren, speciale en blokkeer apparaten over te dragen en symbolische koppelingen, aanpassingstijden, groep, eigendom en machtigingen te behouden.

Wanneer u bestanden of mappen uitsluit, moet u hun relatieve paden naar de bronmap gebruiken.

Er zijn twee opties om de bestanden en mappen op te geven die u wilt uitsluiten:

  • Vanaf een opdrachtregel met de optie --exclude Uit een bestand met de optie --exclude-from .

Sluit een specifiek bestand uit

Om een ​​specifiek bestand uit te sluiten, geeft u het relatieve pad naar het bestand door aan de optie --exclude .

In het volgende voorbeeld wordt het bestand src_directory/file.txt niet overgedragen:

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

Een specifieke map uitsluiten

Het uitsluiten van een specifieke map is hetzelfde als het uitsluiten van een bestand, geef gewoon het relatieve pad naar de map door aan de --exclude optie zoals hieronder getoond:

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

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

Sluit meerdere bestanden of mappen uit

Om meerdere bestanden of mappen uit te sluiten, geeft u eenvoudig meerdere - --exclude opties uit:

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

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

Als het aantal bestanden en / of mappen dat u wilt uitsluiten groot is, kunt u in plaats van meerdere --exclude opties te gebruiken de bestanden en mappen opgeven die u in een bestand wilt uitsluiten en het bestand doorgeven aan de --exclude-from optie.

Het onderstaande commando doet precies hetzelfde als het bovenstaande:

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

file1.txt dir1/* dir2

Sluit meerdere bestanden of mappen uit op basis van een patroon

Met rsync kunt u ook bestanden en mappen uitsluiten op basis van een patroon dat overeenkomt met de bestands- of mapnaam.

Om bijvoorbeeld alle .jpg bestanden uit te sluiten die u zou uitvoeren:

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

Het is wat lastiger om alle andere bestanden en mappen uit te sluiten, behalve mappen die overeenkomen met een bepaald patroon. Stel dat u alle andere bestanden en mappen wilt uitsluiten, behalve de bestanden die eindigen op .jpg .

Een optie is om de volgende opdracht te gebruiken:

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

Wanneer u de optie voor meerdere opnemen / uitsluiten gebruikt, is de eerste overeenkomende regel van toepassing.

  • --include='*.jpg' - Eerst nemen we alle .jpg bestanden op. --include='*/' - Dan nemen we alle mappen op in de map in src_directory . Zonder deze optie kopieert rsync alleen *.jpg bestanden naar de map op het hoogste niveau. -m - Verwijdert de lege mappen.

Een andere optie zou zijn om de uitvoer van de opdracht find naar rsync te leiden:

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

  • -printf %P\\0\\n - verwijdert de src_directory/ uit het bestandspad. --files-from=- - betekent alleen de bestanden van de standaardinvoer (bestanden die worden doorgegeven via de opdracht find).

Conclusie

In deze zelfstudie hebt u geleerd hoe u bestanden en mappen kunt uitsluiten bij het overbrengen van gegevens met Rsync. Er is nog veel meer te leren over Rsync op de Rsync gebruikerspagina.

rsync-terminal