Синхронизация двух папок с помощью дельта-патча на компакт-диске

Мой лучший ответ на этот вопрос:

IFS="#"; ((
for s_date in $(echo ${date1}' +'{1..7}' days#'); do 
date -d "${s_date}";
done
) | grep Sat
) | xargs -I {} date +%d-%b-%Y -d "{}"

Выход:

05-Sep-2015

Это создает список из #разделенных строк, таких как:

"30-AUG-2015 +1 days# 30-AUG-2015 +2 days# 30-AUG-2015 +3 days#..."

Затем этот список зацикливается и передается в date, где я могу grepуказать день, который я ищу, (, например. Сб ). Наконец, я могу использовать xargsдля преобразования вывода в формат, который вы ищете. Для удобства код можно поместить в одну строку.

0
15.11.2019, 15:42
2 ответа

Это похоже на то, для чего git bundleподойдет.

Он может создать файл, представляющий изменения в репозитории с течением времени, который можно записать на компакт-диск для передачи на удаленную машину. Затем эти изменения можно применить к удаленному местоположению.

EXAMPLES

Assume you want to transfer the history from a repository R1 on machine A to another repository R2 on machine B. For whatever reason, direct connection between A and B is not allowed, but we can move data from A to B via some mechanism (CD, email, etc.). We want to update R2 with development made on the branch master in R1.

документы пакета git находятся здесь

0
28.01.2020, 03:06

Вы могли бы использовать rsync --write-batch=FILEдля этого требования, но я думаю, что всего 350 МБ, отправляемых на компакт-диске, это, вероятно, излишество. (Отправляете ли вы 150 МБ или 350 МБ, в значительной степени не имеет значения; он по-прежнему занимает один компакт-диск.)

Если бы вы использовали rsyncтаким образом, вам нужно было бы поддерживать локальную копию папки данных, с которой можно было бы сравнивать входящие измененные файлы. Вывод изменения набора -будет записан в FILEи затем может быть применен к удаленному целевому ПК с помощью rsync --read-batch=FILE.

Лучшей рекомендацией было бы использовать дату/время и размер изменения файла, чтобы позволить cpопределить, какие файлы в коллекции были обновлены, и просто скопировать их с компакт-диска.

cp -u -r --preserve=timestamps /media/CD /path/to/target/folder

Флаг -uздесь обновляет только файлы, которые являются более новыми в исходном коде, а комбинация -r --preserve=timestampsгарантирует, что рассматривается все дерево каталогов, при этом каждый скопированный файл сохраняет свои временные метки.

0
28.01.2020, 03:06

Теги

Похожие вопросы