2016-11-15 3 views
0

Я имею проблему с командой Баш возвращающий следующую ошибку:отсутствует аргумент -exec

/usr/bin/find: missing argument to `-exec' 

Фактическая команда Я бегу это:

/usr/bin/find /backup-directory/ -maxdepth 1 -type f -mtime +14 -printf "%f\n" -exec /usr/local/bin/aws s3 mv /backup-directory/{} s3://my-s3-bin/{}\; 

Цель состояла в том, чтобы это команда, вызванная из crontab, для поиска в каталоге и перемещения любого файла старше 14 дней на Amazon S3 с использованием aws cli.

Команда находки корректно работает вплоть до как раз перед -exec со следующим выходом:

/usr/bin/find /backup-directory/ -maxdepth 1 -type f -mtime +14 -printf "%f\n" 
20161030002947.Pg 
20161029002644.Pg 
20161027002705.Pg 
20161028002402.Pg 
20161031002440.Pg 

И только AWS кли переместить команды с явным именем файла для перемещения работ по назначению: Следующей команды переместите 20161030002947.Pg, например, из локального каталога резервного копирования в bin s3.

/usr/local/bin/aws s3 mv /backup-directory/20161030002947.Pg s3://my-s3-bin/20161030002947.Pg 

Я не знаю, почему он ломается, когда я помещаю их вместе с параметрами -exec и {}.

Причина все вызывается из полного пути, чтобы убедиться, нет никаких непредвиденных проблем, когда команда вызывается из кронтаб, и ОС на данном сервере является Debian 8.

ответ

4

Я предлагаю заменить

{}\; 

по

{} \; 
+0

по крайней мере, пусть это выполнить, так что спасибо. Но теперь я получаю неожиданные результаты. Похоже, что это не относится к -printf «% f \ n». 20161030002947.Pg Указанный пользователем путь /backup-directory//backup-directory/20161030002947.Pg не существует. 20161029002644.Pg Указанный пользователем путь /backup-directory//backup-directory/20161029002644.Pg не существует. – Sheldon

+0

Я только что протестировал это, заменив команду aws эхом, и у меня должно быть непонимание того, что делает '-printf '% f \ n" ', потому что полный путь по-прежнему попадает в' {} '... Это это результат с эхом: 'find/backup-directory/-maxdepth 1 -тип f -mtime +14 -printf"% f \ n "-exec echo/backup-directory/{} s3:/my-s3-bin/{} \; 20161030002947.Pg /backup-directory//backup-directory/20161030002947.Pg s3: // my-s3-bin // backup-directory/20161030002947.Pg' – Sheldon

+0

Printf записывает на стандартный вывод. это не влияет на -exec. –

 Смежные вопросы

  • Нет связанных вопросов^_^