Появилась задача среплицировать файлы на машине из каталога в каталог. В данном случае можно воспользоваться командой rsync

rsync -av /var/log/squid/ /var/proxy-log — копирует все файлы из директории /var/log/squid в директорию /var/proxy-log и ставит на папку /var/proxy-log те же права доступа, что и на папке /var/log/squid/

rsync -t /var/log/squid/access.log /var/proxy-log — делает тоже самое, только без копирования прав доступа и копирует не все файлы из папки, а только файл access.log

Теперь эту команду можно добавить в крон.

Стоит отметить, что нужно делать chmod -R 777 /var/proxy-log иначе доступа к файлам не будет.

КРАТКИЙ ОБЗОР
Локально: rsync [OPTION…] SRC… [DEST]

Доступ через удалённую оболочку:
Скачать: rsync [OPTION…] [USER@]HOST:SRC… [DEST] Отдать : rsync [OPTION…] SRC… [USER@]HOST:DEST

Доступ через rsync демон:
Скачать: rsync [OPTION…] [USER@]HOST::SRC… [DEST] rsync [OPTION…] rsync://[USER@]HOST[:PORT]/SRC… [DEST] Отдать : rsync [OPTION…] SRC… [USER@]HOST::DEST
rsync [OPTION…] SRC… rsync://[USER@]HOST[:PORT]/DEST

Указав путь(SRC )только к исходным файлам, и не указав место назначения(DEST) файлов, вместо копирования будет выведен список исходных файлов.

ПРИМЕНЕНИЕ

Используйте rsync, таким же образом, как используете rcp. Вы должны указать источник и место назначение.

Возможно лучший способ объяснить синтаксис, это показать несколько примеров:

rsync -t *.c foo:src/

Будут скопированы все файлы соответствующие шаблону *.c из текущей директории, в директорию src на машине foo. Если какой нибудь файл уже существует на удалённом узле, тогда протокол обновлений rsync будет задействован для обновления файла, посылая только различия. Смотрите техническую спецификацию, для получения более подробной информации.

rsync -avz foo:src/bar /data/tmp

Будут рекурсивно скопированы все файлы из директории src/bar на узле foo, в директорию /data/tmp/bar на локальный узел. Файлы будут переданы в «аrchive» режиме, который обеспечивают, что при трансфере будут сохранены символьные ссылки, файлы устройств, атрибуты, права, полномочии доступа, и тд. Кроме того, будет использовано сжатие, для уменьшения размера передаваемых данных.

rsync -avz foo:src/bar/ /data/tmp

Замыкающий слэш в имени источника, предостерегает копирование самой директории. Можете читать это так: » копировать содержимое директории», нежели «копировать директорию c именем», но в любом сдучае атрибуты директории будут переданы директории назначения. Другими словами, нижепредставленные команды копируют файлы таким образом, что установленные атрибуты директории /src/foo передаются директории /dest/foo:

rsync -av /src/foo /dest
rsync -av /src/foo/ /dest/foo

Обратите внимание, что для копирования каталога, предоставляемого удалённой машиной по умолчанию, замыкающий слэш не нужен. Оба эти примера копируют содержимое удалённых директорий в директорию «/dest»:

rsync -av host: /dest
rsync -av host::module /dest

Также вы можете использовать rsync в локальном режиме, когда оба пути не содержат двоеточия «:» в имени. В этом случае rsync будет вести себя, как улучшенная команда для копирования.

Наконец, не указав имя модуля(*прим. переводчика:модуль — разрешённый демоном каталог доступа) , вы можете получить список всех (выводимых) модулей, предоставляемых rsynd демоном:

rsync somehost.mydomain.com::

Смотрите соответствующий раздел, для получения более подробной информации.

ДОПОЛНИТЕЛЬНОЕ ПРИМЕНЕНИЕ

Запрос нескольких файлов с удалённого узла, осуществляется через указание дополнительных аргументов в таком же стиле, как и в случае с одним файлом, но можно не писать имя узла. Например:

rsync -av host:file1 :file2 host:file{3,4} /dest/
rsync -av host::modname/file{1,2} host::modname/file3 /dest/
rsync -av host::modname/file1 ::modname/file{3,4}

Старые версии rsync требуют обязательное использование цитатных кавычек в SRC, как в этом примере:

rsync -av host:’dir1/file1 dir2/file2′ /dest
rsync host::’modname/dir1/file1 modname/dir/file2′ /dest

Этот метод всё ещё работает ( по умолчанию ) в последних версиях, но он не очень удобен.

Если необходимо работать с файлом, в имени которого содержится пробел, вы можете указать опцию -protect-args (-s), или вам необходимо указать наличие пробела таким образом, чтобы удалённый узел вас понял. Пример:

rsync -av host:’file name with spaces’ /dest