1

Моя структура папок выглядит так:

/volume1
  /photoTest
    /folderA
      /@eaDir
      /eaDir_tmp 
    /folderB
      /@eaDir
      /eaDir_tmp 
    /folder with space
      /@eaDir
      /eaDir_tmp 

Я пытаюсь скопировать файлы из каждого eaDir_tmp в соответствующую папку @eaDir .

Я смог добиться этого через:

for a in $(find /volume1/photoTest -type d -name eaDir_tmp); do rsync -vhar --chmod=a+rwx $a/ $a/../@eaDir; done;

пока я не попал в папку с пробелами. Приведенный выше скрипт просто выкидывает.

После долгих поисков я попробовал:

find /volume1/photoTest -type d -name eaDir_tmp -print0 | xargs -0 rsync -vhra --chmod=a+rwx {} {}/../@eaDir

Пробный запуск этой команды выполняется без проблем. Но фактический прогон застревает после печати этого.

sending incremental file list
@eaDir/subdir1/

И застревает на этом.

ps -elf | grep rsync показывает несколько процессов rsync в состоянии wait и poll_s .

У кого-нибудь есть идеи, что происходит? И какое решение может быть?

Обновление: некоторые пояснения, основанные на комментарии:

  • Переместить или Копировать? Ну, конечная цель - "двигаться". Но я бы тоже хотел знать, как копировать.
  • Что происходит - да, я хотел бы знать, что происходит и почему мои команды не работают должным образом. Я надеюсь что-то узнать, так как я не обычный пользователь Linux.
  • Какое может быть решение? Ну, я бы тоже хотел это знать. :)
  • Что находится внутри папок eaDir? Больше папок, а затем несколько файлов внутри них. Если это поможет, все началось с этого: https://github.com/mbrrg/synology-thumbgen. Автор предлагает удалить существующие папки @eaDir и просто переименовать в eaDir_tmp . Но я не могу этого сделать, потому что существующие папки содержат файлы, которые я хотел бы сохранить. Я могу объяснить, но я думаю, что это еще больше запутает вопрос.
  • execdir работает - в том смысле, что он не говорит неверный аргумент и не выдает никакой ошибки. Но это не достигает цели - т.е. правильно копировать файлы.
  • Насколько богата моя find? Это внутри моего Synology NAS, на котором, я думаю, работает BusyBox? Не уверен, хотя. Как я узнаю?
  • Если файлы назначения существуют, то я бы хотел перезаписать их, если исходный код более новый. В противном случае нет.

1 ответ1

0

Не уверен, почему rsync застревает. но я смог добиться некоторого прогресса, используя 2 команды:

Сначала скопируйте все файлы через:

find /volume1/photo -type d -name eaDir_tmp -exec cp -a -t {}/../@eaDir {}/. \;

Во-вторых, измените права доступа к файлу:

find /volume1/photo -type d -name @eaDir -exec chmod 777 {} -R \;

Это не только неуклюже и медленно, но мне кажется, что я имею дело с MS-DOS. Где гуру Linux?

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .