这里有点奇怪
我尝试将数据从一个目录复制到另一个目录,并从 cp 中删除目标操作数。请参阅命令
root@server:/home/pp/test1# cp -r ../dhcppc0/*
该命令运行了一个多小时,因为源目录包含超过 135GB 的数据和大量目录。
我监控了这一切,发现系统上的可用磁盘空间已经耗尽,于是就把它放了一夜。第二天早上,我注意到与服务器的会话已经超时,发现可用磁盘空间进一步减少,但文件/目录并未被复制。
仔细检查后,我看到了我的 cp 命令,发现我忘了放一个“。”作为第二个操作数来将副本指向我当前的目录,但它没有给出错误?
所以我的问题是,所有的磁盘空间都去哪儿了?我该如何找回它们?系统上是否有一些我可以清除的临时缓冲空间?
源目录保存着大约 1M 个文件中约 135GB 的数据。
任何帮助将不胜感激!
答案1
仔细检查后,我看到了我的 cp 命令,发现我忘了放一个“。”作为第二个操作数来将副本指向我当前的目录,但它没有给出错误?
为什么要这样做?在 中cp -r ../dhcppc0/*
,cp
不处理../dhcppc0/*
。shell 扩展../dhcppc0/*
,然后将扩展的内容传递给cp
。因此,如果它扩展为../dhcppc0/bar
、../dhcppc0/baz
和 ../dhcppc0/foo
,则扩展的命令将是:
cp -r ../dhcppc0/bar ../dhcppc0/baz ../dhcppc0/foo
如果foo
是目录,cp
则会很乐意将其他目录的所有内容复制到foo
。
[W] 磁盘空间都去哪儿了?如何恢复?系统上是否有一些临时缓冲空间可以清除?
执行echo ../dhcppc0/*
,查看出现的最后一个名字并检查该目录。
这就是为什么在复制目录或使用通配符时总是使用-t
参数:
cp -t . ../dhcppc0/*
# or cp --target-directory . ../dhcppc0/*
请注意,如果你使用 ,你将错过任何点文件夹和点文件*
。你不需要使用它,所以最好简单地这样做:
cp -t . ../dhcppc0/