По дефолту, rsync считает файлы идентичными, если совпадает их:
rsync <что копировать> <куда копировать>
-a, --archive : архивировать-z, --compress : сжимать архив--times : сохранить дату изменения / модификации файлов;--include "core" : по-умолчанию некоторые имена директорий не будут скопированы, например директория с именем core--exclude="node_modules" : список исключений (данные директории/файлы не будут копироваться в to), опцию можно использовать несколько раз подряд, например:--delete : удаление из директории to, файлов которых теперь нет в директории from.--delete-excluded : удалять файлы которые уже есть в директории to, но появились в списке исключения (см. --exclude)--force : принудительное удаление dir, даже если dir не пуста--backup : старые измененные или удаленные файлы не теряются а переименовываются или перемещаются в заданную через --backup-dir=DIR директорию--bwlimit=123456 : скорость копирования файлов кбайт/сек-e 'ssh -p 23' : ssh-параметры, еще пример:-c, --checksum : проверять хешсумму / хэш файла, ведь размер и время может не измениться, например: в файле была цифра 1 а стала 2, а дату модификации вернули прежнюю (параметр конечно не обязателен т.к. меняя в файле 1 на 2 - меняется дата изменения файла, этого достаточно чтобы копия в бэкапе была актуальна). Плюсом будет не использовать данный флаг в том, что если хакер подменит файл и он будет такой же по весу и дате изменения, он просто не обновится в бэкапе.--links при обнаружении символических ссылок воссоздайте символическую ссылку в пункте назначения.--recursive рекурсивно обходит директории--progress показывать прогресс во время передачи-g, --group сохранять группу-o, --owner сохранять владельца (работает, только если запускать rsync-команду от root-а)Копируем с директорию на локальной машине:
rsync \
--links \
--times \
--force \
--recursive \
--delete \
--delete-excluded \
--cvs-exclude \
--include "core" \
/mnt/hdd1500/life/ /mnt/hdd1000/lifeКопируем с локальной машины на удаленную:
rsync \
-az \
--recursive \
--links \
--perms \
--times \
--exclude=.git \
--bwlimit=123456 \
/mnt/hdd1500/web/sync/ root@v30:/var/syncСкрипт:
#!/usr/bin/env bash
# отключаем сжатие данных в SSH (т.к. rsync и так сжимает данные, нет смысла сжимать сжатое)
export RSYNC_RSH="ssh -c arcfour -o Compression=no -x"
CHANGES_DIR="--backup --backup-dir={{ changes_folder }}/`date \+\%Y/\%m/\%d/\%H/\%M`"
rsync \
$CHANGES_DIR \
--delete \
--delete-excluded \
--cvs-exclude --include "core" \
--bwlimit=123456 \
-e 'ssh -p 22 -o StrictHostKeyChecking=no -i ~/.ssh/id_rsa' \
-az \
{{ SITES_SSH_USER }}@{{ SITES_HOST }}:{{ staticFolder }} {{ backup_folder }}
# найдем директории в третьем уровне от заданного (например: /my/rsync-changes/2014/07/25/) и
# удалим те, которые созданы более 15 дней тому назад
find {{ changes_folder }}/ -mindepth 3 -maxdepth 3 -type d -mtime +15 | xargs rm -rf
Комментарии
RSYNCBIN=`which rsync`
на это:
set RSYNCBIN=/usr/local/bin/rsync
затем это:
CHANGES_DIR=
на это:
set CHANGES_DIR=
и это:
export RSYNC_RSH="ssh -c arcfour -o Compression=no -x"
на это:
setenv RSYNC_RSH "ssh -c arcfour -o Compression=no -x"
и теперь снова выполните:
php run.php
и затем:
/bin/csh run