Rsync помогите - PullRequest
       17

Rsync помогите

0 голосов
/ 13 июля 2009

Хорошо, SoF, это немного сложно объяснить, но я буду стараться изо всех сил.

У меня 2 одинаковых диска. Давайте назовем «S:» для источника и «D:» для пункта назначения

S: это диск, на котором хранятся все мои файлы (изображения, музыка, видео, документы и т. Д.), А D: резервная копия HD, для которой (вручную) выполняется резервное копирование каждую ночь воскресенья.

Я бы хотел сделать резервную копию S: в D: с несколькими правилами.

Как я уже сказал, я делаю резервные копии раз в неделю. Это означает, что в течение недели файлы добавляются, удаляются и перемещаются из одной папки в другую.

  1. Копировать только новые файлы или файлы, которые были изменены (необходимо проверить метаду файла)

  2. В конце резервного копирования D: должен был бы в конечном итоге быть идентичным S:.

Это означает, что если бы я переместил файл из папки «A» в папку «B» в S:, задняя сторона увидела бы, что файл больше не находится в папке «A», и ему пришлось бы удалить его, чтобы сделать это папка, идентичная S:.

шаг 2, вероятно, плохо объяснен. , так что вот лучшее объяснение. Вот как я планирую делать вещи, если rsync не может этого сделать.

В python я бы создал скрипт, который выполняет следующее (по порядку):

  1. Сравнивает D: с S: - Скрипт сначала пройдет D :. каждый раз, когда он входит в каталог, он смотрит на тот же каталог в S :. Затем он смотрит на файлы. Если файл находится в D:, но не в S :, это означает, что файл был удален или переименован или перемещен в S :. Поэтому удалите этот файл из D: (повторите этот процесс для всех папок)

  2. Теперь, когда D: имеют одинаковые файлы (или меньше, если они были удалены в описанных выше шагах), начните копирование. Сначала проверьте, существует ли текущий файл в S: в D :, если нет, то скопируйте. Если это так, проверьте метаданные. если он был изменен, скопируйте и перезапишите.

Извините, если я не объяснил это слишком хорошо, сейчас 4:15 утра, и, честно говоря, я устал от ручного удаления всех D: и копирования файлов из S: = /

Ответы [ 2 ]

2 голосов
/ 13 июля 2009

Вот сценарий, который я написал для резервного копирования моей машины Linux на USB-накопитель.

#!/bin/sh

rsync -a \
  --progress \
  --hard-links \
  --whole-file \
  --delete \
  --delete-after \
  --delete-excluded \
  --stats \
  --filter='- *.log' \
  --filter='- /dev' \
  --filter='- /boot' \
  --filter='- /media/' \
  --filter='- /mnt' \
  --filter='- /net' \
  --filter='- /proc' \
  --filter='- /tmp/' \
  --filter='- /var/log/' \
  / /media/disk/middle-earth

Строки - filter исключают файлы / подкаталоги, которые я не хочу синхронизировать.

Вы можете использовать это как отправную точку для создания своего собственного.

1 голос
/ 13 июля 2009

Я думаю, вы ищете переключатель --archive вместе с --delete до rsync. То есть, если я прав, предполагая, что ваше описание означает «я бы хотел, чтобы D: имел такое же содержимое, как S: после выполнения резервного копирования, без необходимости удалять все на D: first».

Я также предполагаю, что, хотя вы используете нотацию Windows для букв дисков, на самом деле вы не используете Windows.

...