Как rsync конкретные файлы, из нескольких папок - PullRequest
0 голосов
/ 25 января 2019

У меня есть две папки,

/home/epi/folder1/
home/epi/folder2/

И

home/epi/destination/

Я хочу переместить * .txt файлы из первых двух папок в место назначения, но иногда есть 5 файлов, иногда 100 КБ.

Я хочу переместить максимум 40 КБ файлов (вместе взятых) (независимо от того, сколько там файлов). Они могут находиться в папке folder1 или folder2, поэтому на первом шаге я сгенерирую list.txt, используя find и head, который содержит 40 тыс. Имен файлов.

Я попробовал несколько вещей, но изо всех сил пытаюсь переместить оба файла (в списке), потому что они могут быть в любой папке. Если я использую --files-from, это не позволяет мне использовать несколько исходных каталогов. Это займет один, а затем ожидает место назначения. Если я пропущу это, я могу указать две исходные папки и переместить все файлы, но затем я перевезу все.

Я пытался использовать `cat list.txt`, но 40k - слишком большой список аргументов для передачи в rsync. Он отлично работает для меньших чисел, но я не хочу, чтобы дополнительные вызовы вызывались несколько раз для одного и того же списка, разрезанного на куски.

а) rsync -O -av --stats --files-from=list.txt --remove-source-files --log-file=test.log /home/epi/destination

б) rsync -O -av `cat list.txt` --stats --remove-source-files --log-file=log.txt --progress --temp-dir=/temp /home/epi/destination

с а) я получаю

`rsync error: syntax or usage error (code 1) at options.c(1652) [client=3.0.6]`

С б) из-за размера аргументов я получаю

`rsync: /usr/bin/rsync: cannot execute [Argument list too long]`
...