Android

Πώς να αποκλείσετε αρχεία και καταλόγους με το rsync

Harvard CS50 AI Lecture 2 | Uncertainty

Harvard CS50 AI Lecture 2 | Uncertainty

Πίνακας περιεχομένων:

Anonim

Το Rsync είναι ένα γρήγορο και ευέλικτο βοηθητικό πρόγραμμα γραμμής εντολών που συγχρονίζει αρχεία και φακέλους μεταξύ δύο τοποθεσιών σε ένα απομακρυσμένο κέλυφος.

Με το Rsync μπορείτε να αντικατοπτρίσετε δεδομένα, να δημιουργήσετε πρόσθετα αντίγραφα ασφαλείας και να αντιγράψετε αρχεία μεταξύ των συστημάτων. Κατά την αντιγραφή δεδομένων, μπορεί να θέλετε να εξαιρέσετε ένα ή περισσότερα αρχεία ή καταλόγους με βάση το όνομα ή την τοποθεσία τους.

Σε αυτό το σεμινάριο, θα σας δείξουμε πώς να εξαιρέσετε αρχεία και καταλόγους με το rsync.

Πριν ξεκινήσεις

Θα πρέπει να έχετε βασικές γνώσεις για το πώς λειτουργεί το rsync.

Στα παρακάτω παραδείγματα, θα χρησιμοποιήσουμε το rsync με την επιλογή -a . Αυτό ενημερώνει το rsync να συγχρονίζει τους καταλόγους αναδρομικά, να μεταφέρει ειδικές και να μπλοκάρει συσκευές και να διατηρεί συμβολικούς συνδέσμους, χρόνους τροποποίησης, ομάδα, ιδιοκτησία και δικαιώματα.

Όταν εξαιρείτε αρχεία ή καταλόγους πρέπει να χρησιμοποιήσετε τις σχετικές διαδρομές τους στον κατάλογο προέλευσης.

Υπάρχουν δύο επιλογές για να καθορίσετε τα αρχεία και τους καταλόγους που θέλετε να εξαιρέσετε:

  • Από μια γραμμή εντολών, χρησιμοποιώντας την επιλογή --exclude ένα αρχείο, χρησιμοποιώντας την επιλογή --exclude-from .

Εξαίρεση συγκεκριμένου αρχείου

Για να αποκλείσετε ένα συγκεκριμένο αρχείο, περάστε τη σχετική διαδρομή στο αρχείο στην επιλογή --exclude .

Στο παρακάτω παράδειγμα το αρχείο src_directory/file.txt δεν θα μεταφερθεί:

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

Εξαίρεση ενός συγκεκριμένου καταλόγου

Εξαιρώντας έναν συγκεκριμένο κατάλογο είναι ίδιο με τον αποκλεισμό ενός αρχείου, απλά περάστε τη σχετική διαδρομή στον κατάλογο στην επιλογή --exclude όπως φαίνεται παρακάτω:

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

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

Εξαίρεση πολλών αρχείων ή καταλόγων

Για να εξαιρέσετε πολλά αρχεία ή καταλόγους, ορίστε απλώς πολλές --exclude :

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

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

Εάν ο αριθμός των αρχείων ή / και των καταλόγων που θέλετε να εξαιρέσετε είναι μεγάλος, αντί να χρησιμοποιήσετε πολλαπλές επιλογές εξαιρέσεων, μπορείτε να καθορίσετε τα αρχεία και τους καταλόγους που θέλετε να εξαιρέσετε σε ένα αρχείο και να περάσετε το αρχείο στο --exclude-from επιλογή.

Η παρακάτω εντολή κάνει ακριβώς το ίδιο με το παραπάνω:

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

file1.txt dir1/* dir2

Εξαίρεση πολλών αρχείων ή καταλόγων με βάση ένα μοτίβο

Με το rsync μπορείτε επίσης να εξαιρέσετε αρχεία και καταλόγους βάσει ενός μοτίβου που ταιριάζει με το όνομα του αρχείου ή του καταλόγου.

Για παράδειγμα, για να εξαιρέσετε όλα τα αρχεία .jpg που θα εκτελέσετε:

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

Είναι λίγο πιο δύσκολο να αποκλείσετε όλα τα άλλα αρχεία και καταλόγους εκτός από εκείνα που ταιριάζουν με ένα συγκεκριμένο μοτίβο. Ας υποθέσουμε ότι θέλετε να αποκλείσετε όλα τα άλλα αρχεία και τους καταλόγους εκτός από τα αρχεία που τελειώνουν με .jpg .

Μια επιλογή είναι να χρησιμοποιήσετε την ακόλουθη εντολή:

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

Όταν χρησιμοποιείτε την επιλογή πολλαπλών επιλογών include / exclude, εφαρμόζεται ο πρώτος κανόνας αντιστοίχισης.

  • --include='*.jpg' - Αρχικά συμπεριλαμβάνουμε όλα τα αρχεία .jpg . --include='*/' - Στη συνέχεια συμπεριλαμβάνουμε όλους τους καταλόγους μέσα στον κατάλογο src_directory . Χωρίς αυτό το rsync θα αντιγράψει μόνο αρχεία *.jpg στον κατάλογο κορυφαίου επιπέδου. -m - Καταργεί τους κενούς καταλόγους.

Μια άλλη επιλογή θα ήταν να διοχετεύσετε την έξοδο της εντολής find στο rsync:

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

  • -printf %P\\0\\n - θα καταργήσει το src_directory/ από τη διαδρομή του αρχείου. --files-from=- σημαίνει μέσα μόνο τα αρχεία από την τυπική είσοδο (αρχεία που έχουν περάσει από την εντολή find).

συμπέρασμα

Σε αυτό το σεμινάριο μάθατε πώς μπορείτε να αποκλείσετε αρχεία και καταλόγους κατά τη μεταφορά δεδομένων με το Rsync. Υπάρχουν πολλά περισσότερα για να μάθετε για το Rsync στη σελίδα του εγχειριδίου χρήστη Rsync.

rsync τερματικό