В даний час я лише RSync-in Directories
, як:
* * * * * rsync -avz /var/www/public_html/images root@<remote-ip>:/var/www/public_html
Отже, як мені rsync
один файл, наприклад /var/www/public_html/.htaccess
,?
Відповіді:
Ви робите це так само, як і каталог, але вказуєте повний шлях до імені файлу як джерело. У вашому прикладі:
rsync -avz --progress /var/www/public_html/.htaccess root@<remote-ip>:/var/www/public_html/
Основний синтаксис
rsync options source destination
Приклад
rsync -az /var/www/public_html/filename root@<remote-ip>:/var/www/public_html
Відповідь Майкла Плейса чудово працює, якщо щодо кореневого каталогу як для джерела, так і для цілі всі каталоги у шляху до файлу вже існують.
Але що, якщо ви хочете синхронізувати файл із цим вихідним шляхом:
/ source-root / a / b / файл
у файл із таким цільовим шляхом:
/ target-root / a / b / файл
а каталоги a і b не існують?
Вам потрібно запустити команду rsync, як показано нижче:
rsync -r --include="/a/" --include="/a/b/" --include="/a/b/file" --exclude="*" [source] [target]
На сьогодні дві відповіді не зовсім правильні, вони отримають більше одного файлу, а інший не такий простий, як може бути, ось простіша відповідь IMO.
Далі подається рівно один файл, але вам потрібно створити каталог dest за допомогою mkdir. Це, мабуть, найшвидший варіант:
mkdir -p ./local/path/to/file
rsync user@remote:/remote/path/to/file/ -zarv --include "filename" --exclude "*" ./local/path/to/file/
Якщо в / remote / path є лише один екземпляр файлу, rsync може створити для вас каталоги, якщо ви зробите наступне. Це, ймовірно, займе трохи більше часу, оскільки він шукає більше каталогів. Плюс це створить порожні каталоги для каталогів у / віддаленому / шляху, які не знаходяться в ./local
cd ./local
rsync user@remote:/remote/path -zarv --include "*/" --include "filename" --exclude "*" .
Майте на увазі, що порядок - включати та - виключати має значення.