Показаны сообщения с ярлыком util. Показать все сообщения
Показаны сообщения с ярлыком util. Показать все сообщения

среда, 7 декабря 2011 г.

Как получить список изменённых файлов в Linux

Предположим у нас есть папка с исходным набором файлов ${ORIG} и рабочая папка ${ORIG_WITH_CHANGES}, в которую изначально были скопированы файлы из ${ORIG} и произведены некоторые изменения. Задача состоит в том, чтобы получить третью папку ${CHANGES}, которая содержала бы только изменённые файлы с сохранением структуры папок.

Добиться поставленной задачи нам поможет команда rsync:

rsync --progress --exclude out -a -c \
        --compare-dest=${ORIG} ${ORIG_WITH_CHANGES} ${CHANGES} 
cd ${CHANGES} 
find -depth -type d -empty -delete
find . -name .git -print0 | xargs -0 rm -rf

Использованные параметры команды rsync:
--progress: с этим ключём rsync печатает список обработанных файлов во время работы
--exclude out: игнорировать папку out
-a: включает архивный режим. Это сокращение к следующей комбинации ключей: -rlptgoD
-с: игнорировать время изменения и проверять изменился ли файл, сравнивая его побитно с оригиналом.
--compare-dest=${ORIG}: по умолчанию rsync первый раз скопирует все файлы в папку ${CHANGES}. Нам же нужны только изменённые по сравнению с оригиналом. Эта опция включает сравнение с оригиналом

Первая строка  создаёт искомую директорию, но помимо изменённых файлов, она ещё хранит кучу пустых папок. Следующие две команды очищают ${CHANGES} от пустых папок и удаляют все папки с названием ".git".

Эта заметка основана на ответах к моему вопросу на unix.stackexchange.com.

пятница, 22 апреля 2011 г.

Работа с образами файловых систем в Windows

Для работы с образами файловых систем можно использовать opensource утилиту ImDisk. Вот пример использования:

set DRIVELETTER=V

copy data\empty.fat image.fat (1)

imdisk -a -t file -m %DRIVELETTER%:\ -f image.fat -o rw (2)
xcopy /E FILES %DRIVELETTER%:\ (3)

imdisk -d -m %DRIVELETTER%:\ (4)
Этот batch-скрипт копирует предворительно созданный пустой образ файловой системы (1), затем монтирует его на диск заданный пользователем (в данном случае диск V:\) с возможностью записи и чтения (2), потом копирует на этот диск все файлы и папки из директории FILES (3) и наконец демонтирует образ (4).

Теперь в файле image.fat лежат все файлы из директории FILES