5

Мне нужно сделать резервную копию нескольких каталогов на моем NAS (он в основном отображается как сетевой ресурс в Finder). Я не хочу делать его загрузочным, просто нужно сделать резервную копию нескольких каталогов. Я также хотел бы, чтобы это бежало ночью. Я пытался просмотреть документацию по rsync, но пока не смог выяснить.

Я также взглянул на rsyncx, но не могу его установить. Также не заботитесь о поддержке Time Machine, просто нужно сделать резервную копию.

4 ответа4

4

На вашем NAS настроена служба rsync? Некоторые поддерживают это (например, ReadyNAS). Если это так, вы можете сделать что-то вроде этого:

#!/bin/sh

DEST=xx.xx.xx.xx::backup/swilliams/
RSYNC_OPTS='-vaC --exclude ".DS_Store"'

/usr/bin/rsync $RSYNC_OPTS --exclude "build/" --exclude "dist/" --exclude "*.pyc" ~/code $DEST
/usr/bin/rsync $RSYNC_OPTS ~/Music $DEST
/usr/bin/rsync $RSYNC_OPTS ~/Pictures $DEST
/usr/bin/rsync $RSYNC_OPTS --exclude "Virtual Machines*" ~/Documents $DEST

Вам нужно будет изменить DEST на IP-адрес вашего NAS, а также изменить пути и другие подходящие элементы.

Если вы сохраните это как, скажем, ~/bin/backup.sh (и обязательно выполните chmod a+x ~/bin/backup.sh), то вы можете запустить его с помощью cron. Запустите crontab -e и добавьте эту строку:

0 0 * * *      $HOME/bin/backup.sh > $HOME/logs/backup.log 2>&1

(0 0 * * * означает: бегать в полночь каждый день, каждый месяц. Первый столбец - минуты, поэтому 3 часа ночи - 0 3 * * * . Это запишет логи в ~/logs поэтому убедитесь, что каталог существует, или поместите их в другое место)

Если ваш NAS не поддерживает rsync как сервис, то я думаю, что он должен работать, если вы измените начало на следующее:

#!/bin/sh

mount_smbfs //user:password@xx.xx.xx.xx/backup /Volumes/backup
DEST=/Volumes/backup

и в конце:

umount /Volumes/backup

(если ваша доля открыта, вы можете оставить имя пользователя и пароль)

Если вы хотите создавать резервные копии с отметкой времени, вы можете поэкспериментировать с командой date. например

DATE=`date +%Y%m%d`

затем получите доступ к $ DATE в вашем скрипте.

Если что-то здесь вам не понятно, просто спросите.

2

При использовании rsync для резервного копирования большинство параметров импорта, на которые следует обратить внимание, - это --backup и --backup-dir , без тех, кто делает копию, а не резервное копирование. Как и в случае резервного копирования, вы хотите отслеживать изменения, а не просто перезаписывать их. Что я использую это:

#!/bin/sh

RSYNCOPTS="-e ssh --delete --one-file-system --relative --archive -P --verbose --compress --recursive"
BACKUPDIR="/backup/"
BACKUPINCR="${BACKUPDIR}/incr/$(date -I)"
BACKUPROOT="${BACKUPDIR}/root/"
EXCLUDES="--exclude-from /home/juser/.backup-excludes"

# Make sure we use a new incr backup directory on each run
NUM=0
while [ -e "${BACKUPINCR}-${NUM}" ]; do
  NUM=$(($NUM  + 1))
done
BACKUPINCR="${BACKUPINCR}-${NUM}"

for i in /home/ /etc/; do
  rsync $RSYNCOPTS $EXCLUDES--backup --backup-dir="$BACKUPINCR" "$i" "$BACKUPROOT"
done

Это дает вам копию в /backup/root/ и резервную копию всех измененных или удаленных файлов в /backup/incr/$DATE-$NUM .

Этот скрипт использует --one-file-system , поэтому он не пересекает границы файловой системы и использует --relative для сохранения абсолютных имен путей.

Если вы хотите сделать его более педантичным, вы можете добавить --checksum , который будет проверять все файлы, а не просто использовать временную метку для пропуска. Преимущество заключается в том, что ваша резервная копия будет иметь больше шансов на то, что ее не удастся перевернуть, но она будет работать дольше.

Еще один общий совет, всегда используйте --dry-run когда вы играете с новой опцией, где вы не уверены, что они делают, особенно когда речь идет о --delete и друзьях, так как вы не захотите уничтожать свои уже существующее резервное копирование случайно.

0

Ознакомьтесь с моими инструкциями по адресу http://www.luxgruppe.de/tech/?p=10 и последующими статьями по синхронизации музыки и плейлиста iTunes с Synology с помощью rsync. Синхронизация списка воспроизведения iTunes: http://www.luxgruppe.de/tech/?p=200

Повеселись!

0

rsync -av path_to_files path_to_place_on_NAS

запустите его с помощью cron, crontab -e. Хотя для этого вам нужно знать vi и посмотреть синтаксис crontab.

Это работает, если файлы принадлежат вам. Я думаю, что вы можете захотеть, чтобы опция E (-avE) захватила ветвь ресурса, которая на самом деле не используется в OS X, насколько я понимаю, а только ваши классические вещи, которые больше не работают).

Вот несколько ссылок, вам не нужно связываться с ssh.

просто:http://www.egg-tech.com/mac_backup/

комплекс: www.bombich.com/mactips/rsync.html

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .