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