合并 Linux 中跨两个文件系统的目录

合并 Linux 中跨两个文件系统的目录

我有一个运行在 JBOD 模式(两个物理磁盘作为一个磁盘)的 NAS 盒。不幸的是,这种配置给我带来了无数问题,我想将其更改为两个独立的磁盘。但是,我的所有文件都分布在两个磁盘上,我想先将它们合并到一个驱动器上,然后再继续。

我有一个像这样的文件结构(两个驱动器上相同),但不应该有文件冲突(文件应该只存在于一个驱动器上)。

/mnt/disk1/home/
 |-- a
 |   |-- file1.txt
 |   |-- file2.txt
 |   |-- file3.txt
 |   |-- file4.txt
 |-- b
 |   |-- file5.txt
 |   |-- file6.txt
 |   `-- file7.txt
 `-- c
     |-- file8.txt
     |-- file9.txt
     `-- file10.txt

/mnt/disk2/home/
 |-- a
 |   |-- file11.txt
 |   |-- file12.txt
 |   |-- file13.txt
 |   `-- file14.txt
 |-- b
 |   |-- file15.txt
 |   |-- file16.txt
 |   `-- file17.txt
 `-- c
     |-- file18.txt
     |-- file19.txt
     `-- file20.txt

我如何将文件从一个磁盘合并到另一个磁盘(复制或移动 - 没关系,无论如何,被复制的磁盘之后都会被格式化)。

我尝试过 rsync、mv、cp 等各种方法,但找不到正确的参数。我见过这个问题 (在 Linux 中合并 2 个目录树而无需复制?),但这指定了不应复制文件。我正在寻找相反的内容(指定需要复制文件)。

-谢谢

答案1

只需使用防水布来巩固它们:

( cd /mnt/disk2/home && tar cf - . ) | ( cd /mnt/disk1/home && tar xf - )

这会将所有文件和子目录从 /mnt/disk2/home 移动到 /mnt/disk1/home。结果将是:

/mnt/disk1/home/
 |-- a
 |   |-- file1.txt
 |   |-- file2.txt
 |   |-- file3.txt
 |   |-- file4.txt
 |   |-- file11.txt
 |   |-- file12.txt
 |   |-- file13.txt
 |   `-- file14.txt
 |-- b
 |   |-- file5.txt
 |   |-- file6.txt
 |   |-- file7.txt
 |   |-- file15.txt
 |   |-- file16.txt
 |   |-- file17.txt
 `-- c
     |-- file8.txt
     |-- file9.txt
     |-- file10.txt
     |-- file18.txt
     |-- file19.txt
     `-- file20.txt

相关内容