Сбой Bash: rsync push_dir «»: не каталог

#directory #push #rsync #aix

#каталог #толкать #rsync #aix

Вопрос:

Как я нахожу файлы, которые я хочу синхронизировать:

 $files=$(find /tmp -mtime -4 -name '*.abc' -type f 2>/dev/null)

$echo $files
$/tmp/file.abc /tmp/newfile.abc
  

Команда Rsync:

 rsync -v -a --progress --stats --rsh="ssh -o StrictHostKeyChecking=no" --files-from=`echo $files` user@target_host:/tmp/
  

Ошибка, которую я вижу:

 building file list ...
push_dir "/tmp/newfile.abc" failed: Not a directory
rsync error: errors selecting input/output files, dirs (code 3) at flist.c(1055)
  

Версия Rsync:

 $rsync --version
rsync  version 2.6.2  protocol version 28
Copyright (C) 1996-2004 by Andrew Tridgell and others
<http://rsync.samba.org/>
Capabilities: 64-bit files, socketpairs, hard links, symlinks, batchfiles,
          no IPv6, 32-bit system inums, 64-bit internal inums
  

Как мне выполнить rsync?

Комментарии:

1. find /tmp -mtime -4 -name '*.abc' -type f 2>/dev/null >~/filelist; rsync --files-from ~/filelist ...

2. @LorinczyZsigmond создает ли ваш метод временный файл? Я не хочу создавать временный файл

3. rsync -v -a --progress --stats --rsh="ssh -o StrictHostKeyChecking=no" -- $files user@target_host:/tmp/ — но избегайте имен файлов, содержащих пробелы

4. @LorinczyZsigmond вы можете опубликовать свой последний комментарий в качестве ответа, если хотите. Это сработало

Ответ №1:

«rsync —files-from=-» принимает конвейер, если указано -, следовательно:

 find /tmp -mtime -4 -name '*.abc' -type f 2>/dev/null | rsync -v -a --progress --stats --rsh="ssh -o StrictHostKeyChecking=no" --files-from=- user@target_host:/tmp/