Rsync не синхронизирует файл .htaccess
Я пытаюсь создать каталог rsync A сервера1 с каталогом B сервера2.
Сидя в каталоге A сервера1, я выполнил следующие команды.
rsync -av * server2::sharename/B
но интересно то, что он синхронизирует все файлы и каталоги, кроме .htaccess или любого скрытого файла в каталоге A. Любые скрытые файлы в подкаталогах синхронизируются.
Я также попробовал следующую команду:
rsync -av --include=".htaccess" * server2::sharename/B
но результаты одинаковы.
Любые идеи, почему скрытые файлы каталога не синхронизируются и как их исправлять. Я работаю как пользователь root.
спасибо
Ответы
Ответ 1
Это связано с тем, что *
по умолчанию распространяется на все файлы в текущем рабочем каталоге, за исключением файлов, имя которых начинается с точки. Таким образом, rsync
никогда не получает эти файлы в качестве аргументов.
Вы можете передать .
, указав текущий рабочий каталог на rsync
:
rsync -av . server2::sharename/B
Этот способ rsync
будет искать файлы для переноса в текущем рабочем каталоге, а не искать их в том, что *
расширяет.
В качестве альтернативы вы можете использовать следующую команду, чтобы сделать *
expand для всех файлов, включая те, которые начинаются с точки:
shopt -s dotglob
См. также справочная страница shopt.
Ответ 2
Для тех, кто просто пытается синхронизировать каталоги между серверами (включая все скрытые файлы) - например, синхронизация somedirA
на source-server
до somedirB
на целевом сервере - попробуйте:
rsync -avz -e ssh --progress [email protected]:/somedirA/ somedirB/
Обратите внимание на косые черты в конце обоих путей. Любой другой синтаксис может привести к неожиданным результатам!
Кроме того, для меня проще всего выполнять команды rsync
с целевого сервера, потому что проще убедиться, что у меня есть надлежащий доступ на запись (т.е. мне может потребоваться добавить sudo
в приведенную выше команду).
Возможно, само собой разумеется, но, очевидно, вашему удаленному пользователю также нужен доступ для чтения к somedirA
на исходном сервере.:)
Ответ 3
У меня была такая же проблема.
Для меня, когда я выполнил следующую команду, скрытые файлы сделали не get rsync'ed
rsync -av /home/user1 wobgalaxy02:/home/user1
Но когда я добавил косые черты в конце путей, скрытые файлы были rsync'ed.
rsync -av /home/user1/ wobgalaxy02:/home/user1/
Обратите внимание на косые черты в конце путей, так как Брайан Лейси сказал, что косые черты - это ключ. У меня нет репутации, чтобы прокомментировать его сообщение, или я бы это сделал.
Ответ 4
Я думаю, проблема связана с расширением подстановки оболочки. Используйте. вместо звезды.
Рассмотрим следующий пример содержимого каталога
$ ls -a .
. .. .htaccess a.html z.js
Расширение подстановочной оболочки оболочки преобразует список аргументов, который программа rsync получает из
-av * server2::sharename/B
в
-av a.html z.js server2::sharename/B
прежде чем команда начнет выполняться.
Ответ 5
*
сообщите rsynch, чтобы не синхронизировать скрытые файлы. Вы пытались его пропустить?