1

我在 debian 下有两个想要合并的 unix 分区(磁盘空间问题:/)。最简单的方法是什么?我认为最好将文件从一个分区 tar 或复制到另一个分区,删除一个分区并调整另一个分区的大小。我将使用 parted 来调整大小,但我应该如何复制文件?有些链接、权限和设备需要在不更改的情况下移动。

4

3 回答 3

2

您可以运行以下命令(以 root 身份)复制文件。它适用于符号链接、设备和普通文件。

cd /partition2
tar cf - . | ( cd /partition1 && tar xf - )

另一种方法是使用 cpio,但我不记得正确的语法。

于 2008-12-10T10:11:07.053 回答
2

由于这是带有 GNU fileutils 的 Debian,cp --archive应该可以正常工作。

cp --archive --sparse=always --verbose --one-file-system --target-directory=/TARGET /ORIGIN

如果出于某种原因你想通过 GNU tar,你需要做这样的事情:

cd /origin
find . -xdev -depth -not -path ./lost+found -print0 \
    | tar --create --atime-preserve=system --null --files-from=- \
          --format=posix --no-recursion --sparse \
    | { cd /target; tar --extract --overwrite --preserve-permissions --sparse; }

(我已经这样做了很多次,以至于我有一个包含所有这些命令行的文件以供快速参考。)

警告:使用 GNU " tar"不会复制 POSIX ACL;您需要使用上述“ cp --archive”方法或“ bsdtar ”:

mkdir /target
cd /origin
find . -xdev -depth -not -path ./lost+found -print0 \
    | bsdtar -c -n --null -T - --format pax \
    | { cd /target; bsdtar -x -pS -f -; }
于 2009-01-13T21:09:04.783 回答
0

您还可以使用 SquashFS 创建分区的镜像并将其复制过来。调整第二个分区的大小后,挂载 SquashFS 映像并复制必要的文件。请记住,您的内核将需要 SquashFS 支持才能挂载映像。

于 2008-12-10T10:17:13.467 回答