У меня есть иерархия папок и я хочу rsync содержимое файла одного в другой.

Таким образом, простой rsync DIRA для DIRB

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

dave:/tmp# mkdir dirA
dave:/tmp# mkdir dirB
dave:/tmp# touch dirA/tmp.txt
dave:/tmp# rsync --stats dirA/ dirB/
skipping directory .

Number of files: 0
Number of files transferred: 0

я могу сделать

dave:/tmp# rsync --stats dirA/* dirB/

Number of files: 1
Number of files transferred: 1

Однако, если есть десятки тысяч файлов, список аргументов может стать слишком длинным.

Кажется довольно простой операцией для синхронизации содержимого двух папок, без вложенных папок, однако я явно что-то упустил?

1 ответ1

3

Это помогает? Опция -d и -m справочной страницы:

   -d, --dirs                  transfer directories without recursing 
   -m, --prune-empty-dirs      prune empty directory chains from file-list

и беги ...

mkdir dirA
mkdir dirB
mkdir dirA/dirAA
touch dirA/fileA
touch dirA/dirAA/fileAA
rsync --stats -dm dirA/ dirB/

Выход:

Number of files: 3 (reg: 1, dir: 2)
Number of created files: 1 (reg: 1)
Number of deleted files: 0
Number of regular files transferred: 1
Total file size: 0 bytes
Total transferred file size: 0 bytes
Literal data: 0 bytes
Matched data: 0 bytes
File list size: 0
File list generation time: 0.001 seconds
File list transfer time: 0.000 seconds
Total bytes sent: 123
Total bytes received: 31

Результат:

ls dirB
fileA

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