如何在不更改目录结构的情况下从一个文件系统移动到另一个文件系统?

如何在不更改目录结构的情况下从一个文件系统移动到另一个文件系统?

/dev/xvda1已满,所以我想将其内容移至我的 30GBudev文件系统上。

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

我怎样才能做到这一点?

堆栈:EC2 Ubuntu 机器。

答案1

不要使用cp复制大量数据。
也使用rsync,因为如果中断可以重新启动。使用以下内容:

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)

正如评论者指出的那样进行编辑,我没有看到这是您的 / 目录。
如果使用 bash 或 zsh 作为 shell,请添加:

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

现在变成了

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

否则,如果使用不同的 shell,您应该--exclude为每个不同的目录执行一个声明。

答案2

在大多数情况下,您不会将文件从一个文件系统移动到另一个文件系统。如果您要扩大虚拟机中的磁盘或从同一磁盘获取更多空间,则需要扩大包含文件系统的分区,然后扩大文件系统以填充分区(使用哪些命令取决于分区类型和文件系统类型)。如果您要移动到新磁盘,通常更快更容易地复制整个分区,然后按上述方法放大它。

就您而言,由于这是虚拟机,因此您需要首先为其提供更大的磁盘。正如所指出的马克·普洛特尼克在评论中, 检查AWS 指南;有一个用于附加新卷的 Web 界面,还有一个用于执行复制(通过创建和恢复快照)的 Web 界面。

请注意,这/dev不是存储文件系统,而是 RAM 中的文件系统。它的 30GB 可用空间是可以存储的最大数据量,但这会占用 RAM 中的一部分,并且在重新启动时会丢失。再次,不要将任何文件移动到/dev,它们将在您重新启动时被删除

相关内容