почему rsync не является копированием файлов к серверу

Если Вы ожидаете, что этот сервер SFTP будет долговечен, выберите версию "долговременной поддержки" для дистрибутива. Многие популярные настольные дистрибутивы (например, Fedora, большая часть Ubuntu) прекращают получать обновления после относительно короткого срока (например, спустя более чем год после первоначальной версии).

Так, большие дистрибутивы "долговременной поддержки" являются Red Hat Enterprise полученный из Linux CentOS, который склонен быть большим количеством сервера/предприятия, сфокусированного, и Ubuntu LTS, который, счастливо, совпадает с текущим релизом Ubuntu, версия 12.04 (под кодовым названием Точный Ящер). Хотя я живу CentOS, Ubuntu является, вероятно, немного более дружественной по отношению к новым пользователям и имеет обширную общественную поддержку и различный форумы.

3
21.07.2013, 04:26
1 ответ

У Вас есть две перепутанные файловых иерархии: /var/chef и /var/chef/chef. Похоже, что Вы редактируете один и затем читаете назад другой.

scp -r root@198.xxx.xxx.xxx:/var/chef . создает a chef каталог в текущем каталоге. Если Вы выполнили это от /var/chef.


Предложенные команды ужасны. Забудьте все, что Вы читаете в том учебном руководстве.

scp -r не сохраняет полномочия файла или времена. Использовать scp -rp сохранить их.

rsync -r не сохраняет полномочия файла или времена. Забудьте что -r опция существует. Использовать rsync -a вместо этого, который сохраняет все обычные метаданные. Всегда передавайте -a опция к rsync, если у Вас нет серьезного основания не к.

Когда Вы пишете rsync -a /path/to/source /path/to/destination, это создает названный подкаталог source под destination. Если Вы хотите синхронизироваться /path/to/source с /path/to/destination вместо этого, добавьте финал / в конце места назначения: rsync -a /path/to/source /path/to/destination/ копии /path/to/source/somefile кому: /path/to/destination/somefile.

Очень важно сохранить время изменения файла. Тем путем Вы знаете, когда файл был в последний раз изменен. Ваши инструменты также знают, когда файл был изменен. В частности, синхронизация большого каталога, в котором не было изменено большинство файлов, намного быстрее, если времена файла надежны. Rsync пропустит файл быстро, если имя, размер и время изменения будут тем же с обеих сторон.

Можно сказать rsync передавать только файлы, которые являются более новыми на исходной стороне путем добавления -u опция (rsync -au SOURCE DESTINATION). Это ограничивает риски, если файлы были также отредактированы на целевой стороне: Вы не сотрете более новую версию, которая находится на целевой стороне с более старой копией на исходной стороне. Однако Вы не можете надежно обнаружить конфликты: если файл был отредактирован с обеих сторон, какой бы ни версия имеет новое время изменения, победит.

Rsync является инструментом для синхронизации данных в одном направлении. Не используйте его для синхронизации в обоих направлениях. Вместо этого используйте Унисон. Унисон ведет список версий файла каждый раз, когда Вы выполняете его и будете жаловаться громко, если существует когда-нибудь конфликт (тот же файл, отредактированный независимо с обеих сторон). Пока нет никакого конфликта (т.е., пока каждый файл только изменяется на одной стороне между синхронизациями), Унисон объединит изменения на этих двух сторонах.

Для установки Унисона используйте GUI или создайте предпочтительный названный файл ~/.unison/chef.prf содержа

root = /var/chef
root = server.example.com:/var/chef
times = true

Выполненный unison -auto chef синхронизировать эти два дерева.

Вместо того, чтобы синхронизировать файлы, необходимо подвергнуть файлы управлению версиями. При внесении изменений передайте их репозиторию. Для развертывания изменений проверьте их на сервере.

3
27.01.2020, 21:23

Теги

Похожие вопросы