Wie der Name schon sagt, wird der Befehl rsync verwendet, um Dateien und Verzeichnisse lokal und remote zu synchronisieren (oder zu kopieren). Eines der wichtigsten Merkmale von rsync ist, dass es mit dem „Delta-Übertragungsalgorithmus“ arbeitet “ bedeutet, dass nur die Änderungen von der Quelle zum Ziel synchronisiert oder kopiert werden, anstatt die gesamte Datei zu kopieren, was letztendlich die Menge der über das Netzwerk gesendeten Daten reduziert. Linux-Freaks verwenden im Allgemeinen den Befehl rsync, um die täglichen Sicherungs-, Spiegelungs- und Wiederherstellungsaktivitäten zu verwalten. Es verwendet eine Remote-Shell wie SSH, während die Dateien vom lokalen Computer zum Remote-Computer synchronisiert werden, und jeder Benutzer im System kann den Befehl rsync verwenden, da er keine Root- oder Sudo-Berechtigungen benötigt..
In diesem Artikel werden wir 17 nützliche Beispiele für rsync-Befehle in Linux diskutieren. Diese Beispiele werden insbesondere Linux-Anfängern helfen, ihre Synchronisierungs-, Spiegelungs- und Sicherungsaufgaben effizienter zu verwalten.
Der Rsync-Befehl ist für alle UNIX- und Linux-ähnlichen Betriebssysteme verfügbar. Wenn wir eine minimale Installation von CentOS &RHEL OS durchführen, ist das rsync-Paket nicht Teil der Standardinstallation. Um rsync also auf CentOS &RHEL zu installieren, führen Sie den folgenden yum-Befehl
aus~]# yum install rsync -y
Verwenden Sie in Debian-ähnlichen Betriebssystemen (Ubuntu und Linux Mint) den folgenden apt-Befehl, um das rysnc-Tool zu installieren,
~]# apt install rsync -y
Syntax des rsync-Befehls:
Lokale Synchronisierung:# rsync {Optionen} {Quelle} {Ziel}
Remote Sync pull:# rsync {options}
Remote-Sync-Push:# rsync
Einige der häufig verwendeten Optionen im Befehl rsync sind unten aufgeführt:
- -v, –verbose Ausführliche Ausgabe
- -q, –quiet Nachrichtenausgabe unterdrücken
- -a, –archive Dateien und Verzeichnisse während der Synchronisierung archivieren ( -a entspricht den folgenden Optionen -rlptgoD)
- -r, –recursive Dateien und Verzeichnisse rekursiv synchronisieren
- -b, –backup Sicherungskopie während der Synchronisierung erstellen
- -u, –update Dateien nicht von der Quelle zum Ziel kopieren, wenn die Zieldateien neuer sind
- -l, –links kopiert Symlinks als Symlinks während der Synchronisierung
- -n, –dry-run einen Testlauf ohne Synchronisierung durchführen
- -e, –rsh=COMMAND Geben Sie die Remote-Shell an, die in rsync verwendet werden soll
- -z, –compress Dateidaten während der Übertragung komprimieren
- -h, –human-readable zeigt die Ausgabezahlen in einem für Menschen lesbaren Format an
- –Fortschritt zeigt den Synchronisierungsfortschritt während der Übertragung an
Lassen Sie uns zu den nützlichen Beispielen des rsync-Befehls springen
Beispiel:1) Dateien lokal kopieren oder synchronisieren (rsync -zvh)
Angenommen, wir möchten eine Datei aus dem Home-Verzeichnis des pkumar-Benutzers in den Ordner /opt/back kopieren, führen Sie den folgenden rsync-Befehl
aus[[email protected] ~]# rsync -zvh /home/pkumar/OpenStack-Networking.pdf /opt/backup OpenStack-Networking.pdf sent 4.09M bytes received 35 bytes 2.73M bytes/sec total size is 6.15M speedup is 1.50 [[email protected] ~]#
Oben haben wir Optionen wie -z für Komprimierung, -v für ausführliche Ausgabe und -h für menschenlesbare Ausgabe verwendet.
Beispiel:2) Verzeichnis lokal kopieren oder synchronisieren (rsync -zavh)
Angenommen, wir möchten das Home-Verzeichnis des pkumar-Benutzers in den Ordner /opt/backup kopieren oder synchronisieren, führen Sie den folgenden rsync-Befehl mit den Optionen -zavh aus ,
[[email protected] ~]# rsync -zavh /home/pkumar /opt/backup sending incremental file list pkumar/ pkumar/.bash_logout pkumar/.bash_profile pkumar/.bashrc pkumar/OpenStack-Networking.pdf sent 4.09M bytes received 96 bytes 8.19M bytes/sec total size is 6.15M speedup is 1.50 [[email protected] ~]#
Lassen Sie uns überprüfen, ob das Verzeichnis kopiert wird oder nicht, führen Sie den folgenden Befehl aus,
[[email protected] ~]# ls -ld /opt/backup/* -rwx------. 1 root root 6153239 Apr 7 00:25 /opt/backup/OpenStack-Networking.pdf drwx------. 2 pkumar pkumar 90 Apr 7 00:25 /opt/backup/pkumar [[email protected] ~]#
Wie wir sehen können, wird das Verzeichnis „pkumar“ im Zielordner erstellt und sein Inhalt wird ebenfalls kopiert. Wenn im obigen Beispiel Trail / nach dem Quellordner (/home/pkumar/) verwendet wird, erstellt der Befehl rsync kein pkumar-Verzeichnis auf dem Ziel, sondern kopiert nur den Inhalt.
[[email protected] ~]# rsync -zavh /home/pkumar/ /opt/backup
Beispiel:3) Kopieren Sie Dateien und Verzeichnisse rekursiv lokal (rsync -zrvh oder rsync -zavh)
Nehmen wir an, wir haben mehrere Dateien und Verzeichnisse im pkumar-Benutzer-Home-Verzeichnis, verwenden Sie den folgenden rsync-Befehl, um Dateien und Verzeichnisse rekursiv zu kopieren, verwenden Sie entweder die Option -a oder -r, um Dateien und Verzeichnisse rekursiv zu kopieren.
Hinweis :Im rsync-Befehl -a Option wird zum Archivieren während des Kopierens oder Synchronisierens verwendet und abgesehen von der Archivierung wird die Option -a auch für Folgendes verwendet:
- Dateien und Verzeichnisse rekursiv kopieren
- Symlinks als Symlinks kopieren
- Berechtigungen beibehalten
- Gruppe beibehalten
- Änderungszeit beibehalten
- Eigentum bewahren
[[email protected] ~]# rsync -zrvh /home/pkumar /opt/backup or [[email protected] ~]# rsync -zavh /home/pkumar /opt/backup
Beispiel:4) Kopieren oder synchronisieren Sie Dateien und Verzeichnisse vom lokalen zum entfernten System
Angenommen, wir möchten den Ordner „/home/pkumar/techi kopieren ” vom lokalen Rechner zum entfernten Rechner (192.168.1.29) unter /opt
[[email protected] ~]# rsync -zarvh /home/pkumar/techi [email protected]:/opt [email protected]'s password: ………………………………………………………… techi/OTRS/ techi/OTRS/Database-Selection-OTRS-Installation-CentOS7.jpg techi/OTRS/Install-OTRS-Accept-License.png techi/OTRS/Install-OTRS-CentOS7-RHEL7.jpg techi/OTRS/mysql-secure-installation-centos7-part2.jpg sent 34.85M bytes received 2.65K bytes 6.34M bytes/sec total size is 37.77M speedup is 1.08 …………………………………………………………… [[email protected] ~]#
Beispiel:5) Kopieren oder Synchronisieren von Dateien und Verzeichnissen vom Remote-Rechner auf das lokale System
Angenommen, wir möchten Dateien und Verzeichnisse vom Remote-Computer (192.168.1.29) auf unser lokales System kopieren. Im folgenden Beispiel kopiere ich den Remote-Ordner “/opt/rpms_db ” auf meinem lokalen Rechner unter /tmp Ordner
[[email protected] ~]# rsync -zarvh [email protected]:/opt/rpms_db /tmp [email protected]'s password: receiving incremental file list …………………………………………………………… rpms_db/ rpms_db/httpd-2.4.6-88.el7.centos.x86_64.rpm rpms_db/httpd-tools-2.4.6-88.el7.centos.x86_64.rpm rpms_db/postfix-2.10.1-7.el7.x86_64.rpm rpms_db/pytalloc-2.1.13-1.el7.x86_64.rpm rpms_db/samba-4.8.3-4.el7.x86_64.rpm rpms_db/samba-client-libs-4.8.3-4.el7.x86_64.rpm rpms_db/samba-common-4.8.3-4.el7.noarch.rpm rpms_db/samba-common-libs-4.8.3-4.el7.x86_64.rpm rpms_db/samba-common-tools-4.8.3-4.el7.x86_64.rpm rpms_db/samba-libs-4.8.3-4.el7.x86_64.rpm sent 484 bytes received 15.45M bytes 1.07M bytes/sec total size is 16.37M speedup is 1.06 [[email protected] ~]#
Der obige Befehl erstellt automatisch einen Ordner „rpms_db“ unter dem /tmp-Ordner auf unserem lokalen Rechner.
[[email protected] ~]# ls -l /tmp/ total 8 -rwx------. 1 root root 827 Apr 6 12:54 ks-script-avmuxw drwxr-xr-x. 2 root root 4096 Apr 7 01:42 rpms_db -rw-------. 1 root root 0 Apr 6 12:35 yum.log [[email protected] ~]# ls -l /tmp/rpms_db/ total 16028 …………………………………… -rw-r--r--. 1 root root 2844028 Nov 12 09:28 httpd-2.4.6-88.el7.centos.x86_64.rpm -rw-r--r--. 1 root root 92504 Nov 12 09:28 httpd-tools-2.4.6-88.el7.centos.x86_64.rpm -rw-r--r--. 1 root root 2558136 Nov 12 09:44 postfix-2.10.1-7.el7.x86_64.rpm -rw-r--r--. 1 root root 17404 Nov 12 09:44 pytalloc-2.1.13-1.el7.x86_64.rpm -rw-r--r--. 1 root root 696472 Nov 12 09:46 samba-4.8.3-4.el7.x86_64.rpm -rw-r--r--. 1 root root 5070800 Nov 12 09:46 samba-client-libs-4.8.3-4.el7.x86_64.rpm -rw-r--r--. 1 root root 210984 Nov 12 10:19 samba-common-4.8.3-4.el7.noarch.rpm -rw-r--r--. 1 root root 167512 Nov 12 09:46 samba-common-libs-4.8.3-4.el7.x86_64.rpm -rw-r--r--. 1 root root 458380 Nov 12 09:46 samba-common-tools-4.8.3-4.el7.x86_64.rpm -rw-r--r--. 1 root root 282332 Nov 12 09:46 samba-libs-4.8.3-4.el7.x86_64.rpm …………………………………… [[email protected] ~]#
Beispiel:6) Geben Sie während der Synchronisierung eine Remote-Shell an (rsync -e ssh)
Im rsync-Befehl können wir die Remote-Shell wie ssh während der Synchronisierung angeben. Nehmen wir an, wir möchten eine sichere Kommunikation zwischen der Quelle und dem Zielcomputer über rsync verwenden, dann sollten wir ssh als Remote-Shell verwenden, das Beispiel ist unten gezeigt
[[email protected] ~]# rsync -zarvh -e ssh [email protected]:/opt/rpms_db /tmp [email protected]'s password: receiving incremental file list ……………………………………………………………………………… rpms_db/ rpms_db/httpd-2.4.6-88.el7.centos.x86_64.rpm rpms_db/httpd-tools-2.4.6-88.el7.centos.x86_64.rpm rpms_db/postfix-2.10.1-7.el7.x86_64.rpm rpms_db/pytalloc-2.1.13-1.el7.x86_64.rpm rpms_db/samba-4.8.3-4.el7.x86_64.rpm rpms_db/samba-client-libs-4.8.3-4.el7.x86_64.rpm rpms_db/samba-common-4.8.3-4.el7.noarch.rpm rpms_db/samba-common-libs-4.8.3-4.el7.x86_64.rpm rpms_db/samba-common-tools-4.8.3-4.el7.x86_64.rpm rpms_db/samba-libs-4.8.3-4.el7.x86_64.rpm sent 484 bytes received 15.45M bytes 1.82M bytes/sec total size is 16.37M speedup is 1.06 [[email protected] ~]#
Beispiel:7) Anzeige des Synchronisierungsfortschritts in der Ausgabe des rsync-Befehls
Wenn Sie den Synchronisierungs- oder Kopierfortschritt im rsync-Befehl sehen möchten, verwenden Sie „–progress “, Beispiel ist unten gezeigt
[[email protected] ~]# rsync -avh --progress [email protected]:/opt/rpms_db /tmp [email protected]'s password: receiving incremental file list …………………………………………………………………………………………………….. rpms_db/ rpms_db/httpd-2.4.6-88.el7.centos.x86_64.rpm 2.84M 100% 35.22MB/s 0:00:00 (xfr#6, to-chk=18/25) rpms_db/httpd-tools-2.4.6-88.el7.centos.x86_64.rpm 92.50K 100% 1.13MB/s 0:00:00 (xfr#7, to-chk=17/25) rpms_db/postfix-2.10.1-7.el7.x86_64.rpm 2.56M 100% 14.44MB/s 0:00:00 (xfr#17, to-chk=7/25) rpms_db/samba-4.8.3-4.el7.x86_64.rpm 696.47K 100% 3.71MB/s 0:00:00 (xfr#19, to-chk=5/25) rpms_db/samba-client-libs-4.8.3-4.el7.x86_64.rpm 5.07M 100% 19.90MB/s 0:00:00 (xfr#20, to-chk=4/25) rpms_db/samba-common-4.8.3-4.el7.noarch.rpm 210.98K 100% 844.42kB/s 0:00:00 (xfr#21, to-chk=3/25) rpms_db/samba-common-libs-4.8.3-4.el7.x86_64.rpm 167.51K 100% 667.70kB/s 0:00:00 (xfr#22, to-chk=2/25) rpms_db/samba-common-tools-4.8.3-4.el7.x86_64.rpm 458.38K 100% 1.77MB/s 0:00:00 (xfr#23, to-chk=1/25) rpms_db/samba-libs-4.8.3-4.el7.x86_64.rpm 282.33K 100% 1.09MB/s 0:00:00 (xfr#24, to-chk=0/25) sent 484 bytes received 16.38M bytes 3.64M bytes/sec total size is 16.37M speedup is 1.00 [[email protected] ~]#
Lesen Sie auch: 14 SCP-Befehlsbeispiele zum sicheren Übertragen von Dateien unter Linux
Beispiel:8) Kopieren Sie die Verzeichnisstruktur, ohne Dateien zu kopieren
Es gibt einige Szenarien, in denen wir die Verzeichnisstruktur kopieren möchten, wobei Dateien nur vom lokalen Computer auf den Remote-Computer oder umgekehrt kopiert werden.
Angenommen, wir möchten die Verzeichnisstruktur von „/home/pkumar“ vom lokalen Computer auf den Remote-Computer (192.168.1.29) im Ordner „/opt“ kopieren.
[email protected] ~]# rsync -av -f"+ */" -f"- *" /home/pkumar [email protected]:/opt/ [email protected]'s password: building file list ... done ……………………………………………… pkumar/ sent 43 bytes received 19 bytes 17.71 bytes/sec total size is 0 speedup is 0.00 [[email protected] ~]#
Beispiel:9) Setzen Sie die Übertragung großer Dateien fort, nachdem sie in scp fehlgeschlagen sind
Es gibt einige Szenarien im Linux-Administratorprofil, in denen wir mit dem Kopieren einer größeren Datei mit dem Befehl scp begonnen haben, sie aber mittendrin beendet wurde und wir es uns aufgrund ihrer Größe und ihres Zeitaufwands nicht leisten können, sie erneut mit scp zu kopieren.
In dieser Situation kann also der Befehl rsync verwendet werden, da er mit dem Kopieren der Datei an der Stelle beginnen kann, an der er aufgehört oder beendet wurde, oder mit anderen Worten, rsync kann die Dateien übertragen, die teilweise mit dem Befehl scp kopiert wurden. Beispiel ist unten gezeigt,
[[email protected] ~]# scp [email protected]:/root/ubuntu-18.04-desktop-amd64.iso /opt [email protected]'s password: ubuntu-18.04-desktop-amd64.iso 28% 526MB 61.5MB/s 00:21 ETA ^CKilled by signal 2. [[email protected] ~]# [[email protected] ~]# rsync -P --rsh=ssh [email protected]:/root/ubuntu-18.04-desktop-amd64.iso /opt [email protected]'s password: ubuntu-18.04-desktop-amd64.iso 1,921,843,200 100% 18.47MB/s 0:01:39 (xfr#1, to-chk=0/1) [[email protected] ~]#
Beispiel:10) Dateien am Ziel löschen, wenn sie nicht in der Quelle vorhanden sind (–delete)
Wenn Sie bereits Dateien von der Quelle zum Ziel synchronisiert haben und die Dateien von der Quelle gelöscht haben, können Sie den Befehl rsync zwingen, die Dateien auf dem Ziel zu löschen, indem Sie die Option –delete verwenden, das Beispiel ist unten gezeigt
[[email protected] ~]# rsync -avz --delete /opt/rpms_db [email protected]:/tmp/rpms_db [email protected]'s password: sending incremental file list deleting rpms_db/apr-util-1.5.2-6.el7.x86_64.rpm deleting rpms_db/apr-1.4.8-3.el7_4.1.x86_64.rpm rpms_db/ sent 862 bytes received 105 bytes 276.29 bytes/sec total size is 15,947,152 speedup is 16,491.37 [[email protected] ~]#
Beispiel:11) Begrenzung der Dateiübertragungsgröße (–max-size)
Wenn Sie die großen Dateien nicht mit rsync übertragen oder kopieren möchten, verwenden Sie die Option „–max-size={specify-size-here}“ , nehmen wir an, wir möchten keine Dateien übertragen, deren Größe mehr als 500 KB beträgt,
Hinweis:Um die Größe in MB anzugeben, verwenden Sie M und für GB G.
[[email protected] ~]# rsync -avz --max-size='500K' /opt/rpms_db [email protected]:/tmp
Beispiel:12) Die geänderte Datei am Ziel nicht synchronisieren/kopieren
Es gibt einige Szenarien, in denen wir die Dateien am Ziel geändert haben und die geänderten Dateien aus der Quelle während der Synchronisierung nicht überschreiben möchten, sodass dies einfach mit -u erreicht werden kann Option im rsync-Befehl
[[email protected] ~]# rsync -avzu [email protected]:/opt/techi /home/pkumar/techi [email protected]'s password: receiving incremental file list sent 37 bytes received 4,960 bytes 1,427.71 bytes/sec total size is 37,771,649 speedup is 7,558.87 [[email protected] ~]#
Beispiel:13) Dateien nach der Synchronisierung aus der Quelle entfernen (–remove-source-files)
Angenommen, Sie möchten Dateien aus der Quelle löschen, sobald die Synchronisierung mit dem Befehl rsync abgeschlossen ist. Im folgenden Beispiel Ordner vom lokalen System „/home/pkumar/techi.tgz ” mit dem Remote-System (192.168.1.29) synchronisiert wird, wird die Datei nach Abschluss der Synchronisierung aus der Quelle gelöscht.
[[email protected] ~]# rsync --remove-source-files -zvh /home/pkumar/techi.tgz [email protected]:/opt [email protected]'s password: techi.tgz sent 597 bytes received 43 bytes 182.86 bytes/sec total size is 518 speedup is 0.81 [[email protected] ~]# [[email protected] ~]# ls -l /home/pkumar/techi.tgz ls: cannot access /home/pkumar/techi.tgz: No such file or directory [[email protected] ~]#
Beispiel:14) Probelauf des rsync-Befehls vor der eigentlichen Synchronisation
Es kann einige Situationen geben, in denen es nicht um das Verhalten des rsync-Befehls geht, daher ist es in solchen Fällen besser, rsync trocken auszuführen
[[email protected] ~]# rsync --dry-run --remove-source-files -zvh /home/pkumar/projects.tar [email protected]:/opt [email protected]'s password: projects.tar sent 51 bytes received 19 bytes 7.37 bytes/sec total size is 981.24M speedup is 14,017,682.29 (DRY RUN) [[email protected] ~]#
Beispiel:15) Ein- und Ausschließen von Dateien während der Synchronisierung mit rsync
Es gibt Situationen, in denen wir Dateien und Verzeichnisse eines bestimmten Typs kopieren oder synchronisieren und Dateien oder Verzeichnisse eines bestimmten Typs ausschließen möchten. Der Rsync-Befehl unterstützt sowohl Include- als auch Exclude-Optionen.
Im folgenden Beispiel möchten Sie die Dateien vom Typ pdf und rpm kopieren und die Dateitypen png ausschließen.
[[email protected] ~]# rsync -avz -e ssh --include '*.pdf *.rpm' --exclude '*.png' /home/pkumar/techi [email protected]:/opt [email protected]'s password: sending incremental file list techi/ techi/OpenStack-Networking.pdf techi/httpd-2.4.6-88.el7.centos.x86_64.rpm techi/httpd-tools-2.4.6-88.el7.centos.x86_64.rpm techi/postfix-2.10.1-7.el7.x86_64.rpm sent 9,469,912 bytes received 96 bytes 2,705,716.57 bytes/sec total size is 11,647,907 speedup is 1.23 [[email protected] ~]#
Beispiel:16) Beschränken Sie die Datenübertragungsgeschwindigkeit in rsync (–bwlimit=)
Im rsync-Befehl können wir das Bandbreitenlimit für die Datenübertragung von einem Computer zum anderen festlegen, verwenden Sie ‘–bwlimit=
Nehmen wir an, wir möchten die maximale Datenübertragungsrate (Geschwindigkeit) mit rsync auf 600 KB/s einstellen, das Beispiel ist unten gezeigt
[[email protected] ~]# rsync -avz --progress --bwlimit=600 /home/pkumar/techi [email protected]:/opt [email protected]'s password: sending incremental file list techi/ techi/OpenStack-Networking.pdf 6,153,239 100% 910.02kB/s 0:00:06 (xfr#1, to-chk=6/8) techi/httpd-2.4.6-88.el7.centos.x86_64.rpm 2,844,028 100% 615.28kB/s 0:00:04 (xfr#2, to-chk=5/8) techi/httpd-tools-2.4.6-88.el7.centos.x86_64.rpm 92,504 100% 507.51kB/s 0:00:00 (xfr#3, to-chk=4/8) techi/pkumar-2.png 0 100% 0.00kB/s 0:00:00 (xfr#4, to-chk=3/8) techi/pkumar-3.png 0 100% 0.00kB/s 0:00:00 (xfr#5, to-chk=2/8) techi/pkumar.png 0 100% 0.00kB/s 0:00:00 (xfr#6, to-chk=1/8) techi/postfix-2.10.1-7.el7.x86_64.rpm 2,558,136 100% 594.80kB/s 0:00:04 (xfr#7, to-chk=0/8) sent 9,470,087 bytes received 153 bytes 485,653.33 bytes/sec total size is 11,647,907 speedup is 1.23 [[email protected] ~]#
Beispiel:17) Unterschiede in Dateien und Verzeichnissen zwischen Quelle und Ziel anzeigen
Verwenden Sie „-i ”-Option im rsync-Befehl, um den Unterschied in Dateien und Verzeichnissen zwischen Quelle und Ziel aufzulisten. Beispiel ist unten gezeigt
[[email protected]teway ~]# rsync -avzi /home/pkumar/techi [email protected]:/opt [email protected]'s password: sending incremental file list .d..t...... techi/ <f.st...... techi/projects.txt sent 438 bytes received 45 bytes 138.00 bytes/sec total size is 11,648,064 speedup is 24,116.07 [[email protected] ~]#
Gemäß der obigen Befehlsausgabe gibt es einen Unterschied in der Datei „projects.txt“ am Ziel. Es folgt die Bedeutung der Schlüsselwörter in der obigen Ausgabe,
- d:gibt eine Änderung in der Zieldatei an
- f:gibt eine Datei an
- t:gibt die Änderung der Zeitstempel an
- s:gibt Größenänderung an
Das ist alles aus diesem Tutorial. Falls Sie diese Beispiele verwenden, um den Befehl rsync besser zu verstehen, teilen Sie bitte Ihr Feedback und Ihre Kommentare
Auch lesen : 17 nützliche tar-Befehle mit praktischen Beispielen in Linux
Auch lesen :So rotieren und komprimieren Sie Protokolldateien unter Linux mit Logrotate