Случайно папка "Storage" монтируется через SMB/cifs? Если вы не знаете, вы можете проверить это в файле «/etc/fstab» или ввести команду «mount | grep cifs». Если это так, вы можете попробовать опцию «vers=1.0» при монтировании FS (менее защищенной )или, если у вас есть доступ к серверу, изменить общий ресурс и монтировать его через NFS.
Вы можете использовать относительные пути, тем самым избегая всех осложнений --include
и --exclude
. Здесь флаг--relative
(-R
)указывает rsync
сохранить исходные пути в месте назначения. /./
в источнике отмечает начало сохраняемого пути (без него весь путь будет сохранен)
rsync --dry-run -aivR --stats /mnt/source/source-folder/./sfolder2/ /mnt/destination/destination-folder
Будет скопировано sfolder2
и его содержимое в /mnt/destination/destination-folder/sfolder2
.
Для копирования нескольких папок(sfolder2
иsfolder4
)можно использовать несколько исходных путей. Например, если ваша оболочка обрабатывает группы в фигурных скобках {x,y}
,
rsync --dry-run -aivR --stats /mnt/source/source-folder/./sfolder{2,4}/ /mnt/destination/destination-folder
или это иначе
rsync --dry-run -aivR --stats /mnt/source/source-folder/./sfolder2/ /mnt/source/source-folder/./other4/ /mnt/destination/destination-folder
(Кстати, вместо того, чтобы использовать только--recursive
(-r
)для копирования дерева файлов, используйте либо --archive
(-a
), либо добавьте --times
(-t
), чтобы помочь rsync
оптимизировать будущие копии тех же файлов. В моем примере я использовал -a
; вы можете использовать -rt
, если хотите избежать копирования прав собственности и разрешений.)
Вы исключили «все везде» с помощью *
и включили sfolder2
, который передает только файл или каталог sfolder2
в корневом каталоге передачи.
Вместо этого вы можете использовать /*
, чтобы исключить только файлы, относящиеся к исходному каталогу. Это означает, что если, например. /sfolder3
исключается, то все файлы внутри /sfolder3
также исключаются, поскольку исключается родительский каталог.
Использование /sfolder2/
делает явным, что каталог относится к исходному каталогу(/
в начале )и является каталогом(/
в конце ). Я также заменил -r
на-a
(режим архива ), который включает-r
:
rsync -naiv --stats --include='/sfolder2/' --exclude='/*' \
/mnt/source/source-folder/ /mnt/destination/destination-folder/
Включить sfolder2
иsfolder4
:
rsync -naiv --stats --include='/sfolder2/' --include='/sfolder4/' --exclude='/*' \
/mnt/source/source-folder/ /mnt/destination/destination-folder/