JAOH — это Java-реализация SSH2. Вы подключаетесь непосредственно к существующему процессу удаленного сервера.
Не такой процесс, как при входе в систему.
Если вы хотите «делать что-то» (переадресация портов, переадресация X11, передача файлов )вы интегрируете его как часть своих собственных Java-программ.Он не создает новый пользовательский процесс на удаленном сайте, как вам кажется.
rsync не включает /
в начале рассматриваемых путей. Почему? выбор дизайнера.
Но есть еще одна проблема. Вы использовали **в своих включениях для включения файлов в подкаталоги. Однако сами подкаталоги исключаются. Попробуйте изменить включения и исключения на:
--include='*/' --include='BackupOfSettings/**.tar.gz' --include='BackupOfPackages/**.installed' --include='BackupOfImages/**.img.gz' --exclude='*' --prune-empty-dirs
Это :включить все каталоги, только нужные файлы, никаких других файлов, и удалить пустые каталоги.
Другим вариантом было бы написать:
--include='BackupOfSettings/' --include='BackupOfSettings/**/' --include='BackupOfSettings/**.tar.gz' --include='BackupOfPackages/' --include='BackupOfPackages/**/' --include='BackupOfPackages/**.installed' --include='BackupOfImages/' --include='BackupOfImages/**/' --include='BackupOfImages/**.img.gz' --exclude='*'
В данном случае сюда входят конкретные каталоги, их подкаталоги и требуемые файлы. Этот вариант потребуется, если у вас есть большое количество других каталогов в исходном дереве, которые вы хотите избежать поиска.
Чтобы расширить принятый ответ @Freddy
Мои исходные и конечные каталоги:
openWrtPath="/mnt/usb/openwrt/"
ncpPath="/media/myCloudDrive/openwrt"
Моя цель — синхронизировать только файлы с расширением.tar.gz из подпапки в исходном каталоге с именем :BackupOfSettings. Подпапки в подпапке BackupOfSettings также игнорируются.
Вот упрощенная версия команды в вопросе. Кредит здесь и здесь для объяснения того, как rsync будет синхронизировать определенный тип файла из определенного подкаталога -.
rsync -vvritn --include='BackupOfSettings/' --include='BackupOfSettings/*.tar.gz' --exclude='*' $openWrtPath ncp:$ncpPath
--include='BackupOfSettings/'
--include='BackupOfSettings/*.tar.gz'
--exclude='*'
, который соответствует и исключает файлы и папки, которые не включены явно. --exclude='/*'
против--exclude='*'
rsync -vvritn --include='BackupOfSettings/' --include='BackupOfSettings/*.tar.gz' --exclude='/*' $openWrtPath ncp:$ncpPath
Если мы используем --exclude='/*'
, то приведенная выше команда разрешит все файлы в папке BackupOfSettings sub -, потому что это исключение соответствует только файлам и папкам sub -в исходном каталоге... оно не соответствует файлы в подпапках -исходного каталога.