Debian:无法在空间不足的情况下将目录 A(及其所有子目录)移动到同一驱动器上的目录 B

Debian:无法在空间不足的情况下将目录 A(及其所有子目录)移动到同一驱动器上的目录 B

我遇到了一个非常奇怪的问题:我不能简单地将同一驱动器上的目录 A 的所有内容移动到目录 B 。大小为 500 GB,我有 24 GB 可用空间,但它失败了。为什么移动文件又需要 500 GB 空间?

我尝试过不同的文件管理器:Krusader、Dolphin、命令 mv、mc,它们都失败了。原因很简单:他们不会在移动文件后删除文件,而是首先将所有文件复制到目标位置,然后在源位置删除它们。这显然不是我想要的,因为我没有另外 500 GB 的可用空间。

mv 命令失败,因为无法将文件移动到已经存在的目录中(即使为空,因为子目录也被视为文件,并且所有工具出于某种奇怪的原因在移动或复制之前首先创建所有目录)

我当然可以逐个文件或单个目录进行操作,但这是一个包含 190,000 个文件和数千个目录的 Dropbox 文件夹,因此这是不可行的。

我认为可行的解决方案:是否有一个 GUI 工具(TUI 或 GUI)工具可以在移动文件后立即从源删除文件?您可能会认为这只是常识,但我尝试过的所有命令似乎都混淆了移动和复制,并且执行完全相同的操作。

我不能只重命名该目录,这是 Dropbox 的一个怪癖,您无法将新安装重新链接到现有的 Dropbox 目录,但必须重命名旧目录,Dropbox 创建一个新目录,然后我想移动文件,而我却被困住了。

我宁愿不使用 rsync ,因为它不会删除源代码中的目录,然后它会变得丑陋和混乱,我想在编写自己的 mv 命令实际获得工作之前看看是否有 GUI/TUI完毕。

答案1

我创建了一个名为 dira 和 dira/tt 的目录,并触及 dira/hh 和 dira/tt/anotherfiloe

ls dir*
hh  tt
ls dir*/tt
anotherfiloe

之后:不复制,只是硬链接文件

cp -l -r dira dirb

查看:

ls dir*/tt
dira/tt:
anotherfiloe
dirb/tt:
anotherfiloe

我现在可以删除源:

 rm -r dira

查看:

ls dir*/tt
anotherfiloe
ls dir*
hh  tt

相关内容