Cp ist einer der grundlegenden Unix-Befehle. Sie wissen bereits, dass damit eine oder mehrere Dateien oder Verzeichnisse von der Quelle zum Ziel kopiert werden.
Wenn die Quelldateien ein gemeinsames Muster haben, verwenden Sie Platzhalterzeichen wie unten gezeigt. In diesem Beispiel werden alle Erweiterungsdateien c in das Verzeichnis / home / thegeekstuff / projectbackup / src / kopiert.
Kopieren Sie mehrere Verzeichnisse wie unten gezeigt.
dd
In diesem Beispiel ist readme.txt sowohl im Projekt / Verzeichnis als auch im Projektbackup / vorhanden, und beim Kopieren von Projekt / nach Projektbackup / wird die vorhandene Datei readme.txt wie folgt gesichert:
Die vorhandene Datei wurde in die Readme-Datei verschoben. txt ~ und die neue Datei wurde wie unten gezeigt als readme.txt kopiert.
-rw-r - r-- 1 bala geek 1020 8. Januar 13:36 readme.txt Bei Backups ist es wichtig zu verstehen, wie der Befehl rsync funktioniert, um Dateien effektiv zu sichern .
folgt an : Im Folgenden wird gezeigt, dass ohne die Option -d die Datei (und nicht der Link) kopiert wird: Um den Link beizubehalten Gehen Sie beim Kopieren wie folgt vor:
In diesem Beispiel werden die beiden Dateien LICENSE und readme.txt aus dem Projekt / in das Projektbackup / kopiert. Die LICENSE-Datei ist jedoch bereits im Verzeichnis projectbackup / vorhanden und aktueller als die im Verzeichnis project /.
In diesem Beispiel müssen Sie die LICENSE-Datei also nicht zurück in das Verzeichnis projectbackup / kopieren. Dies wird automatisch vom Befehl cp behandelt, wenn Sie die Option -u wie unten gezeigt verwenden. Im folgenden Beispiel wurde nur die Datei readme.txt kopiert, wie durch den Zeitstempel in die Datei angegeben.
Während dieses Tutorial für Anfänger gedacht ist, ist es auch für alle nützlich, verschiedene cp-Befehlsoptionen anhand einiger praktischer Beispiele schnell zu überprüfen.
Selbst wenn Sie den Befehl cp ständig verwenden, sind wahrscheinlich eines oder mehrere der unten erläuterten Beispiele für Sie neu.
Die allgemeine Form des Kopierbefehls:
Wenn Sie eine Datei von einem Ordner in einen anderen mit demselben Namen kopieren möchten, ist nur der Name des Zielverzeichnisses ausreichend unten gezeigt.
Ein Verzeichnis (und sein gesamter Inhalt) kann mit der rekursiven Option -r wie unten gezeigt von der Quelle zum Ziel kopiert werden:
Selbst wenn Sie den Befehl cp ständig verwenden, sind wahrscheinlich eines oder mehrere der unten erläuterten Beispiele für Sie neu.
Die allgemeine Form des Kopierbefehls:
cp [option] source destination
1. Kopieren Sie eine Datei oder ein Verzeichnis von der Quelle zum Ziel
Um eine Datei zu kopieren, müssen Sie die Quelle und das Ziel an den Kopierbefehl übergeben. Im folgenden Beispiel wird die Datei von project / readme.txt nach projectbackup / readme-new.txt kopiert.
$ cp project/readme.txt projectbackup/readme-new.txt
$ cd projectbackup/
$ ls readme-new.txt
Wenn Sie eine Datei von einem Ordner in einen anderen mit demselben Namen kopieren möchten, ist nur der Name des Zielverzeichnisses ausreichend unten gezeigt.
$ cp project/readme.txt projectbackup/
$ cd projectbackup/
$ ls readme.txt
Ein Verzeichnis (und sein gesamter Inhalt) kann mit der rekursiven Option -r wie unten gezeigt von der Quelle zum Ziel kopiert werden:
$ ls project
src/ bin/ doc/ lib/ test/ readme.txt LICENSE
$ cp -r project/ backup/
$ ls backup
src/ bin/ doc/ lib/ test/ readme.txt LICENSE
2. Kopieren Sie mehrere Dateien oder Verzeichnisse
Sie können mehr als eine Datei von der Quelle zum Ziel kopieren, wie unten gezeigt:$ cd src/
$ cp global.c main.c parse.c /home/thegeekstuff/projectbackup/src/
Wenn die Quelldateien ein gemeinsames Muster haben, verwenden Sie Platzhalterzeichen wie unten gezeigt. In diesem Beispiel werden alle Erweiterungsdateien c in das Verzeichnis / home / thegeekstuff / projectbackup / src / kopiert.
$ cp *.c /home/thegeekstuff/projectbackup/src/
Kopieren Sie mehrere Verzeichnisse wie unten gezeigt.
$ cd project/
$ cp -r src/ bin/ /home/thegeekstuff/projectbackup/
dd
3. Sichern Sie vor dem Kopieren an ein Ziel
Falls die Zieldatei bereits mit demselben Namen vorhanden ist, können Sie mit cp die Zieldatei sichern, bevor Sie sie überschreiben.In diesem Beispiel ist readme.txt sowohl im Projekt / Verzeichnis als auch im Projektbackup / vorhanden, und beim Kopieren von Projekt / nach Projektbackup / wird die vorhandene Datei readme.txt wie folgt gesichert:
$ cd projectbackup
$ ls -l readme.txt -rw-r--r-- 1 bala geek 1038 Jan 8 13:15 readme.txt
$ cd ../project
$ ls -l readme.txt -rw-r--r-- 1 bala geek 1020 Jan 8 12:25 readme.txt
$ cp --backup readme.txt /home/thegeekstuff/projectbackup/
Die vorhandene Datei wurde in die Readme-Datei verschoben. txt ~ und die neue Datei wurde wie unten gezeigt als readme.txt kopiert.
$ cd / home / thegeekstuff / projectbackup /
$ ls -l
-rw-r - r-- 1 bala geek 1020 8. Januar 13:36 readme.txt Bei Backups ist es wichtig zu verstehen, wie der Befehl rsync funktioniert, um Dateien effektiv zu sichern .
-rw-r - r-- 1 bala geek 1038 8 gennaio 13:15 readme.txt ~
4. Behalten Sie die Links beim Kopieren bei
Wenn Sie den Befehl cp ausführen und die Quelle eine Linkdatei ist, wird die eigentliche Datei kopiert und nicht die Linkdatei. Wenn Sie den Link nur so kopieren möchten, wie er ist, geben Sie die Option -d wiefolgt an : Im Folgenden wird gezeigt, dass ohne die Option -d die Datei (und nicht der Link) kopiert wird: Um den Link beizubehalten Gehen Sie beim Kopieren wie folgt vor:
$ cd project / bin
$ ls -l startup.sh
lrwxrwxrwx 1 root root 18 gen 8 13:59 startup.sh -> ../test/startup.sh
$ cp startup.sh / home / thegeekstuff / projectbackup / bin /
$ cd / home / thegeekstuff / projectbackup / bin /
$ ls -l
-rw-r - r-- 1 root root 102 8 gennaio 14:02 startup.sh
$ cd project / bin
$ cp -d startup.sh / home / thegeekstuff / projectbackup / bin /
$ ls -l startup.sh
lrwxrwxrwx 1 root root 18 gen 8 14:10 startup.sh -> ../test/startup.sh
5. Überschreiben Sie keine vorhandene Datei
Wenn Sie nur kopieren möchten, wenn die Zieldatei nicht vorhanden ist, verwenden Sie die Option -n wie unten gezeigt. Dadurch wird die vorhandene Datei nicht überschrieben, und der Befehl cp gibt den Beendigungscode wie unten gezeigt erfolgreich zurück: Wie Sie unten sehen, wurde die Zieldatei nicht überschrieben.$ cd projectbackup
$ ls -l readme.txt
-rw-r - r-- 1 bala geek 1038 8 gennaio 13:15 readme.txt
$ cd ../project
$ ls -l readme.txt
-rw-r - r-- 1 bala geek 1020 8 gennaio 12:25 readme.txt
$ cp -n readme.txt / home / thegeekstuff / projectbackup / bin /
$ echo $?
0
$ cd projectbackup
$ ls -l readme.txt
-rw-r - r-- 1 bala geek 1038 8 gennaio 13:15 readme.txt
6. Bestätigung vor dem Überschreiben (interaktiver Modus)
Bei Verwendung der Option -i ist eine Bestätigung erforderlich, bevor eine Datei wie unten gezeigt überschrieben wird.$ cp -i readme.txt / home / thegeekstuff / projectbackup /
cp: sovrascrivi `/home/thegeekstuff/projectbackup/readme.txt '? y
7. Erstellen Sie einen echten Link zu einer Datei (anstatt sie zu kopieren).
Wenn Sie den Befehl cp ausführen, können Sie einen echten Link zur Datei erstellen (anstatt sie zu kopieren). Im folgenden Beispiel wird der echte Link für die Datei sample.txt im Verzeichnis test / erstellt. Wie oben dargestellt, ist test / sample.txt eine Datei, die mit der Datei sample.txt verknüpft ist, und der Inode beider Dateien ist identisch.$ ls -li sample.txt
10883362 -rw-r - r-- 2 bala geek 1038 9 gennaio 18:40 sample.txt
$ cp -l test sample.txt /
$ ls -li test / sample.txt
10883362 -rw-r - r-- 2 bala geek 1038 9 gennaio 18:40 test / sample.txt
8. Erstellen Sie einen Software-Link zu einer Datei oder einem Verzeichnis (anstatt sie zu kopieren).
Wenn Sie den Befehl cp ausführen, können Sie einen Software-Link zu einer Datei oder einem Verzeichnis erstellen. Im folgenden Beispiel wird eine symbolische Verknüpfung für libFS.so.6.0.0 als libFS.so erstellt.# cd / usr / lib /
# ls -l libFS.so.6.0.0
-rw-r - r-- 1 root root 42808 19 novembre 2010 libFS.so.6.0.0
# cp -s libFS.so.6.0.0 libFS.so
# ls -l libFS.so
lrwxrwxrwx 1 root root 14 gen 9 20:18 libFS.so -> libFS.so.6.0.0
9. Behalten Sie beim Kopieren die Attribute der Datei oder des Verzeichnisses bei
Mit der Option -p können Sie die Eigenschaften einer Datei oder eines Verzeichnisses wie unten gezeigt beibehalten: Sie können auch nur die erforderlichen Eigenschaften wie Modus, Eigenschaften, Zeitstempel usw. beibehalten. Im folgenden Beispiel wird der Modus einer Datei beibehalten beim Kopieren:$ ls -l sample.txt
-rw-r - r-- 2 bala geek 1038 9 gennaio 18:40 sample.txt
$ cp -p sample.txt test /
$ ls -l test / sample.txt
-rw-r - r-- 2 bala geek 1038 9 gennaio 18:40 test / sample.txt
$ cp --preserve = mode sample.txt test /
10. Nur kopieren, wenn die Quelldatei neuer als das Ziel ist oder fehlt
Das Kopieren dauert für eine kleine Datei nicht lange, beim Kopieren einer großen Datei kann es jedoch lange dauern. Wenn Sie also eine große Datei kopieren, sollten Sie sicherstellen, dass Sie dies nur tun, wenn die Quelldatei neuer als die Zieldatei ist oder wenn die Zieldatei fehlt, indem Sie die Option -u verwenden (siehe unten).In diesem Beispiel werden die beiden Dateien LICENSE und readme.txt aus dem Projekt / in das Projektbackup / kopiert. Die LICENSE-Datei ist jedoch bereits im Verzeichnis projectbackup / vorhanden und aktueller als die im Verzeichnis project /.
$ cd project/
$ ls -l LICENSE readme.txt
-rw-r--r-- 1 bala geek 108 Jan 8 13:14 LICENSE
-rw-r--r-- 1 bala geek 32 Jan 8 13:16 readme.txt
$ cd /home/thegeekstuff/projectbackup/
$ ls -l LICENSE readme.txt
ls: cannot access readme.txt: No such file or directory
-rw-r--r-- 1 root root 112 Jan 9 20:31 LICENSE
In diesem Beispiel müssen Sie die LICENSE-Datei also nicht zurück in das Verzeichnis projectbackup / kopieren. Dies wird automatisch vom Befehl cp behandelt, wenn Sie die Option -u wie unten gezeigt verwenden. Im folgenden Beispiel wurde nur die Datei readme.txt kopiert, wie durch den Zeitstempel in die Datei angegeben.
$ cp -u -v LICENSE readme.txt /home/thegeekstuff/projectbackup/
`readme.txt' -> `/home/thegeekstuff/projectbackup/readme.txt'
$ cd /home/thegeekstuff/projectbackup/
$ ls -l LICENSE readme.txt
-rw-r--r-- 1 bala geek 112 Jan 9 20:31 LICENSE
-rw-r--r-- 1 bala geek 32 Jan 9 22:17 readme.txt
Kommentare
Kommentar veröffentlichen