Я сделал ошибку в rsync
и все файлы копируются с полным путем. Все файлы, которые я скопировал, находятся в
/var/www/photos/2012/1007/1007
Попытка 1
Теперь я хотел бы исправить пути, выполнив
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:
rsync -zavrR --rsh="ssh -c arcfour -l root -p 2200" www.mydomain.com:/home/photos/public_html/2012/1007 /var/www/photos/2012/1007
Это сработало в моем тесте с указанными вами путями:
cd /var/www/photos
mv 2012 old
mv old/1007/1007 .
mv 1007 2012
Что происходит, вы пытаетесь переместить каталог поверх существующего каталога - и ему это не нравится, потому что в каталоге есть что-то. Переименовав сначала 2012, вы можете без проблем переместить его.
Я могу думать по крайней мере двумя способами:
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
Первый метод, вероятно, лучший ответ на ваш вопрос.