The OpenNET Project / Index page

[ новости /+++ | форум | wiki | теги | ]



"Раздел полезных советов: Полезные рецепты при работе с rsync"
Вариант для распечатки  
Пред. тема | След. тема 
Форум Разговоры, обсуждение новостей
Изначальное сообщение [ Отслеживать ]

"Раздел полезных советов: Полезные рецепты при работе с rsync"  +/
Сообщение от auto_tips (??), 17-Сен-08, 20:52 
1. Если копируемая директория заканчивается слэшем, то файлы будут скопированы
в каталог назначения относительно корня изначально заданной директории. Пример:
   rsync -a /dir1/dir2 /dir3 - будет создана иерархия /dir3/dir2/файлы
   rsync -a /dir1/dir2/ /dir3 - будет создана иерархия /dir3/файлы


2. При транзитном переносе файлов через дополнительную машину не нужно забывать,
что опция "-a" подразумевает трансляцию имен пользователей и групп в локальные uid/gid,
т.е. скопировав данные с первой машины на вторую,  а потом со второй на локально подключенный
жесткий диск, предназначенный для третьей машины, получим на третьей машины совершенно иных
владельцев каталогов и файлов. Не тех которые были в /etc/password первой машины,
а тех, которые в данным момент в /etc/password второй машины (изменятся типовые пользователи,
например, web, ftp, dhcp, номера uid/gid  которых отличаются на двух машинах).
Чтобы этого не произошло нужно испольщовать опцию "--numeric-ids".

3. Особенности задания файлов исключений ("--exclude-from=файл" или " --exclude маска1  --exclude маска2").


Для того чтобы исключить из бэкапа содержимое директории, но саму директорию оставить,
нужно указать в "exclude" файле "/dir/*", а не  "/dir/"
(под "/dir" подпадет и /dir123, и файл /dir.txt, для директорий указание "/" в конце обязательно).

Звездочка ("*") в шаблоне действует только на имя файла/каталога, чтобы маской охватывалась
часть пусти, включая "/", нужно писать "**".

Шаблон не начинающийся с '/' проверяется с конца строки. Например "/dir/test" будет
проверен c начала пути, а "dir/test.txt" или "*.log" с конца.
  
Если необходимо исключить все поддиректории в /dir, кроме /dir/best, в список исключений нужно поместить:
   + /dir/best/
   - /dir/*
При переборе содержимого "exclude" файла, срабатывает первое правило под которое подпадает текущий путь,
не важно исключающие или нет. В качестве корня выступает директория назначения,
т.е. "/" в "exclude" файле = "/dir3/dir2" или "/dir3" из первого совета.


4. Запрещение двойного сжатия при передаче данных по SSH.
rsync при задании опции "-z" более оптимально сжимает передаваемые данные,
поэтому сжатие средствами ssh можно отключить:

   export RSYNC_RSH="ssh -c arcfour -o Compression=no -x"
   rsync -a -z -v --bwlimit=16 /dir1 /dir2 user@test.ru:/dir3/

где, --bwlimit=16 ограничивает пропускную способность при копировании бэкапа в 16 Кбайт в сек.

5. Изменение уровня точности при сравнении локального и удаленного времени модификации файлов.
Например, для того чтобы считать идентичными файлы время модификации которых отличается
на 1 секунду необходимо указать: "--modify-window=1".

6. Пример сохранения истории изменения данных. При этом старые измененные или удаленные
файлы не теряются а перемещаются в директорию /snapshot/дата.

   #!/bin/sh
   snapshot_dir="/snapshot/`date \+\%Y_\%m_\%d`"
   mkdir $snapshot_dir
   rsync -a -v --delete --max-delete=1000 --hard-links \
     --delete-excluded --exclude-from=/etc/rsync_backup.exclude \
     --backup --backup-dir=$snapshot_dir \
     / /backup

    RETCODE=$?
    if [ $RETCODE -ne 0 ]; then
        echo "Err code=$RETCODE"| mail -s "FATAL RSYNC BACKUP" admin@test.ru
    fi
    echo RET: $RETCODE
    /bin/chmod 0700 /backup
    /bin/chmod 0700 /snapshot

7. Некоторые полезные опции.

   -v - говорливость, выводит имена обрабатываемых файлов;

   -a - работа в режиме архивирования, сохраняются права доступа и информация о владельцах;

   -H - сохранять жесткие ссылки, оставляя их на другом конце бэкапа;

   -x - не выходить за пределы текущей точки монтирования;

   --progress - показывать сколько процентов осталось до завершения и скорость передачи;

   --delete - удалять из бэкапа файлы, которых уже нет на стороне источника.
      --delete отличается от --delete-after тем, что удаление производится вначале,
      а не на завершающей стадии процесса бэкапа. --delete-after работает быстрее,
      так как не требует лишней стадии обхода списка файлов, но требует использования опции --force
      для обработки таких ситуаций как удаление файла и появление диретории с тем же именем;

   --delete-excluded - удалять части которые уже есть на стороне бэкапа, но появились в списке исключения;

   -n - режим тестирования, реально никаких действий по копированию не производится, только эмуляция;

   -c - использование сверки по контрольным суммам, а не по времени изменения и размеру;

   --compare-dest=DIR - сохранять новые и измененные файлы в отдельной директории,
      не трогая на время коприрования основную директорию назначения, в конце - разом,
      путем переименования, обновить содержимое бэкапа;

   --link-dest=DIR - использовать жесткие ссылки на файлы в DIR, например, для создания подобия снапшотов;

   --ignore-errors - продолжать копирование и удаление после появления ошибок;

   --max-delete - ограничение максимально числа удаляемых за один раз файлов и каталогов;

   -A - сохранять не только права доступа, но и ACL;

   --files-from=FILE - задать список директорий и файлов для бэкапа в файле;


URL:
Обсуждается: http://www.opennet.ru/tips/info/1768.shtml

Ответить | Правка | Cообщить модератору

Оглавление

Сообщения [Сортировка по времени | RSS]


1. "Полезные рецепты при работе с rsync"  +/
Сообщение от PavelR (??), 17-Сен-08, 20:52 
полезный рецепт, спасибо
Ответить | Правка | ^ к родителю #0 | Наверх | Cообщить модератору

4. "Полезные рецепты при работе с rsync"  +/
Сообщение от dm2003email (ok), 30-Авг-12, 19:17 
После недавнего моего краха (http://softhelp.org.ua/?p=1665) стоит сильно призадуматься о использовании автоматического бекапинга. Плохо что доходит это только с годами.
Ответить | Правка | ^ к родителю #0 | Наверх | Cообщить модератору

5. "Полезные рецепты при работе с rsync"  +/
Сообщение от Андрейemail (??), 26-Июл-13, 22:59 
Спасибо, очень познавательно.
Вот только вопрос, у Вас написано что можно исключить из директории все кроме:
+ /dir/best/
- /dir/*
А можно ли такое провернуть с файлами?
+/private\ folders.pst
-*.pst
?
У меня не получилось, может где ошибся, но данный вариант исключил все pst-файлы, а вариант:
--include-from=include.txt --delete --exclude-from=exclude.txt
include.txt:
/private\ folders.pst
exclude.txt:
*.pst
Слил все файлы pst.
Логики не понимаю, может объясните?
Сам я не смог найти примера шаблона с использованием файла-списка (

Заранее благодарен.

Ответить | Правка | ^ к родителю #0 | Наверх | Cообщить модератору

6. "Полезные рецепты при работе с rsync"  +/
Сообщение от Андрейemail (??), 27-Июл-13, 15:16 
Нашел, может кому пригодится )

+ /**/private\ folders.pst
- *.pst

Ответить | Правка | ^ к родителю #0 | Наверх | Cообщить модератору

7. "Полезные рецепты при работе с rsync"  +/
Сообщение от Классныйemail (?), 09-Авг-18, 16:52 
Привет! Спасибо за интересную статью. Уважаемый автор,

Как скопировать только mp3 файлы из папки с вложеннными папками и большим числом разных файлов, которые в данном случае, не нужны?
Нужно вытащить только mp3 файлы из всех папок этого дерева папок в новый источник.

Пробовал разные варианты с --include --exclude:

rsync -avzh --delete --include '*.mp3' --exclude '*' /pathsource /pathreceiver
rsync -avzh --delete --include '*mp3' --exclude '*' /pathsource /pathreceiver

и тд

Вот такой вывод в терминале:

sending incremental file list

sent 18 bytes  received 12 bytes  60.00 bytes/sec
total size is 0  speedup is 0.00

Не копирует
Интересная задача.
Подскажи как сделать

Ответить | Правка | ^ к родителю #0 | Наверх | Cообщить модератору

8. "Полезные рецепты при работе с rsync"  +/
Сообщение от elikoemail (?), 02-Сен-19, 00:44 
привет, я хотел синхронизировать уже скопированную папку (через cp -r) с помощью команды rsync -rvh dir1 /root/dir2. после синхронизации папка dir2 получилось намного большего размера чем dir1. я хочу чтобы они были одинакового размера. вопрос: как мне это сделать?
Ответить | Правка | ^ к родителю #0 | Наверх | Cообщить модератору

Архив | Удалить

Рекомендовать для помещения в FAQ | Индекс форумов | Темы | Пред. тема | След. тема




Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2024 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру