Wie wechselt man von einem Dateisystem zu einem anderen, ohne die Verzeichnisstruktur zu ändern?

Wie wechselt man von einem Dateisystem zu einem anderen, ohne die Verzeichnisstruktur zu ändern?

/dev/xvda1ist voll, deshalb möchte ich den Inhalt auf mein 30 GB-Dateisystem verschieben udev.

Filesystem      Size  Used Avail Use% Mounted on
udev             30G  4.0K   30G   1% /dev
tmpfs           5.9G  768K  5.9G   1% /run
/dev/xvda1      7.8G  7.4G     0 100% /
none            4.0K     0  4.0K   0% /sys/fs/cgroup
none            5.0M     0  5.0M   0% /run/lock
none             30G     0   30G   0% /run/shm
none            100M     0  100M   0% /run/user

Wie kann ich das machen?

Stapel: EC2 Ubuntu-Maschine.

Antwort1

Verwenden Sie cp nicht zum Kopieren großer Datenmengen.
Verwenden Sie auch rsync, da es bei Unterbrechung neu gestartet werden kann. Verwenden Sie Folgendes:

rsync -az -H /path/to/source  /path/to/destination

-a : Archive mode (i.e. recurse into directories, and preserve symlinks, file permissions, file modification times, file group, file owner, device files & special files) <br>
-z : Compress file data during the transfer <br>
-H : Preserve hard links (i.e. copy hard links as hard links)

Bearbeitet, wie von den Kommentatoren angemerkt. Ich habe nicht gesehen, dass dies Ihr /-Verzeichnis ist.
Wenn Sie Bash oder Zsh als Shell verwenden, fügen Sie hinzu:

--exclude={"/dev/*","/proc/*","/sys/*","/tmp/*","/run/*","/mnt/*","/media/*","/lost+found"}

Jetzt wird es

rsync -az -H --exclude={"/dev/*","/proc/*","/sys/*","/tmp/*","/run/*","/mnt/*","/media/*","/lost+found"} /path/to/source  /path/to/destination 

Andernfalls sollten Sie, wenn Sie eine andere Shell verwenden, --excludefür jedes andere Verzeichnis eine Anweisung ausführen.

Antwort2

In den meisten Fällen würden Sie die Dateien nicht von einem Dateisystem auf ein anderes verschieben. Wenn Sie die Festplatte in einer virtuellen Maschine vergrößern oder mehr Speicherplatz von derselben Festplatte beanspruchen, würden Sie die Partition mit dem Dateisystem vergrößern und dann das Dateisystem, um die Partition zu füllen (welche Befehle zu verwenden sind, hängt vom Partitionstyp und vom Dateisystemtyp ab). Wenn Sie auf eine neue Festplatte verschieben, ist es normalerweise schneller und einfacher, die Partition als Ganzes zu kopieren und sie dann wie oben beschrieben zu vergrößern.

Da es sich in Ihrem Fall um eine virtuelle Maschine handelt, müssen Sie ihr zunächst eine größere Festplatte zuweisen. Wie bereits erwähnt vonMark Plotnick in einem Kommentar, Überprüf denAWS-Leitfaden; es gibt eine Weboberfläche zum Anhängen eines neuen Datenträgers und auch eine Weboberfläche zum Ausführen des Kopierens (durch Erstellen und Wiederherstellen eines Snapshots).

Beachten Sie, dass/dev sich nicht um ein Speicherdateisystem handelt, sondern um ein Dateisystem im RAM. Die 30 GB freien Speicherplatz sind die maximale Datenmenge, die dort gespeichert werden kann, aber das beansprucht einen Teil Ihres RAM und geht beim Neustart verloren. Noch einmal:Verschieben Sie keine Dateien nach/dev , diese würden beim Neustart gelöscht.

verwandte Informationen