mv: Verzeichnis nicht leer

mv: Verzeichnis nicht leer

Ich möchte den Inhalt eines Verzeichnisses innerhalb eines anderen Verzeichnisses mit denselben Ordnern verschieben.

Hier ist ein Beispiel:

Ich habe ./backupdas mit den Verzeichnissen baseund test. Jetzt möchte ich diese Verzeichnisse nach verschieben ./backupArchives.

Ich benutze das:

mv ./backup/* ./backupArchives

aber ich habe den Fehler

mv: cannot move './backup/base' to './backupsArchive/base': Directory not empty

Ich habe versucht, zu verwenden --force, aber ohne Erfolg. Gibt es eine Möglichkeit, es zu verschieben, wenn bereits Ordner vorhanden sind?

Hinweis: Ich möchte nur Inhalte zusammenführen, es erfolgt kein Überschreiben.

Antwort1

Obwohl dies in der Manpage nicht dokumentiert ist, mvwird die Umbenennung eines Verzeichnisses in ein anderes Verzeichnis abgelehnt, wenn das Zielverzeichnis Dateien enthält. Das ist in Ihrem Fall eine gute Sache, da Sie wahrscheinlichverschmelzenden Inhalt der Quelle in das Ziel, was mvnicht funktioniert.

Verwenden Sie rsync -a backup/ backupArchives/stattdessen. Danach rm -rf backup/*.

Anstatt zu verwenden rsync, können Sie auch das klassische

(cd backup && tar c .) | (cd backupArchives && tar xf -)

wodurch Sie mehr Geek-Punkte erhalten.

Antwort2

Schnell und einfach, wenn Sie wissen, was Sie tun:

cp -r ./backup/* ./backupArchives && rm -R ./backup/*

Antwort3

Nach dem Verzeichnis, das Sie verschieben möchten, müssen Sie *(steht für einen beliebigen Text oder eine beliebige Zahl) angeben. Beispiel:

mv /var/www/* /recovery/wwwrecovery/

das ist alles. Wenn Sie Dateien verschieben, verschieben Sie sie wie folgt:

mv /var/www/index.php /recovery/index.php

Eine andere Möglichkeit besteht darin, den Ordnerinhalt mit tar zu packen:

tar -cvzpf backup.tar.gz /var/www 

Verschieben Sie es dann in eine andere Datei. Ich empfehle diesen Schritt auch, da Tar es komprimiert und verkleinert.

Um die Dateien in einen anderen Ordner zu extrahieren, verwenden Sie

tar -xvzpf /var/www/

Wenn Sie an einen Speicherort kopieren müssen, der Ihnen nicht gehört, stellen Sie Ihrem Befehl unbedingt den sudoBefehl nach der von Ihnen verwendeten Option voran.

sudo tar -cvzpf backup.tar.gz /var/www/

Antwort4

Funktioniert auf jeden Fall rsync, aber es funktioniert möglicherweise auch auf Rechnern, die dies nicht unterstützen rsync(z. B. in cPanel, wo rsync nicht standardmäßig installiert ist).

Wie wäre es mit:

cd /path/to/backup/ && cp -R --parents ./* ../backupArchives

backupEntfernen Sie dann ggf. das Verzeichnis

Hinweis 1: Sie müssen cdin das backupVerzeichnis, bevor Sie dencp -R --parents ...

Hinweis 2: Überprüfen Sie das backupArchivesVerzeichnis noch einmal, wenn Sie die neuen Dateien aus der Sicherung erhalten haben.

verwandte Informationen