我在一个rsync犯了一个错误,所有的文件都被完整的path复制。 所有我复制的文件都在
/var/www/photos/2012/1007/1007
尝试1
现在我想通过这样做来修复path
mv /var/www/photos/2012/1007/1007 /var/www/photos/2012
这给出了错误:
mv: cannot move `/var/www/photos/2012/1007/1007' to `/var/www/photos/2012/1007': Directory not empty
尝试2
mv /var/www/photos/2012/1007/1007/* /var/www/photos/2012/1007
我得到的错误:
-bash: /bin/mv: Argument list too long
问题:重命名包含大量文件的文件夹的正确方法是什么?
这些文件实际上被复制到/var/www/photos/2012/1007/home/photos/public_html/2012/1007但不知何故,我把它们到/var/www/photos/2012/1007/1007
Rsync cmd:
rsync -zavrR --rsh="ssh -c arcfour -l root -p 2200" www.mydomain.com:/home/photos/public_html/2012/1007 /var/www/photos/2012/1007
这与我给你的pathtesting:
cd /var/www/photos mv 2012 old mv old/1007/1007 . mv 1007 2012
发生什么事是你正试图将一个目录移到一个已经存在的目录的顶部 – 而且它不喜欢这样做,因为目录中有东西。 通过首先重命名2012年,您可以移动它没有问题。
至less有两种我能想到的方式:
1:首先将/ var / www / photos / 2012/1007重命名为/ var / www / photos / 2012 / temppath,然后将mv / var / www / photos / 2012 / temppath / 1007 – > / var / www / photos / 2012 /,然后rmdir / var / www / photos / 2012 / temppath。
2:使用一个简单的脚本来移动内容:
for f in `find /var/www/photos/2012/1007/1007 -mindepth 1`; do mv $f /var/www/photos/2012/1007/1007/../; done
第一种方法可能是更好的回答你的问题。