Работа со списками файлов (файл-листами)

nnBackup предоставляет удобные средства для работы со списками файлов: он может принимать файл-листы в качестве аргумента для дальнейшей обработки (копирования файлов, синхронизации и т. д.) и сам создавать (генерировать) такие списки.

Сначала рассмотрим способы создания файл-листов. Файл-лист - это список файлов, отобранных по определенному принципу. С помощью опций -list, -list2 и -list3 nnBackup может сохранять в указанный текстовой файл имена и относительные пути файлов, скопированных во время последней сессии резервного копирования. При этом, опция -list предписывает сохранить в файл имена и относительные пути всех скопированных файлов, опция -list2 предписывает сохранять только имена и относительные пути файлов, скопированных из приемного каталога в исходный при двунаправленной синхронизации каталогов, а опция -list3 предписывает сохранять в указанный текстовой файл список всех удаленных файлов и каталогов. Пути файлов сохраняются относительно текущего рабочего каталога.

Чтобы сохранить в список полные (абсолютные) пути файлов, используйте опцию -fp.

Вы можете тонко настраивать, какие именно файлы попадут в список, используя все доступные nnBackup средства: включающие и исключающие маски, дату и время последней модификации файла, учет вложенных каталогов и т. д.

Примеры:

nnbackup.exe copy -i c:\data -o d:\backup -s -v -list filelist.txt

Расшифровка: копировать все файлы из каталога c:\data и всех его подкаталогов в каталог d:\backup и сохранить список скопированных файлов в filelist.txt

nnbackup.exe copy -i c:\data -o d:\backup -m *.doc,*.rtf -s -v -list filelist.txt

Расшифровка: копировать все *.doc и *.rtf файлы из каталога c:\data и всех его подкаталогов в каталог d:\backup и сохранить список скопированных файлов в filelist.txt

nnbackup.exe copy -i c:\data -o d:\backup -m *.doc,*.rtf -D 01.01.2003 -s -v -list filelist.txt

Расшифровка: копировать все *.doc и *.rtf файлы, которые изменились (или появились) с 01.01.2003 из каталога c:\data и всех его подкаталогов в каталог d:\backup и сохранить список скопированных файлов в filelist.txt

Возникает резонный вопрос: неужели для создания файл-листа мы вынуждены физически копировать файлы из одного каталога в другой? Нет, разумеется это не так. Если вам нужно составить список файлов, но при этом нет необходимости в их физическом копировании, вы можете воспользоваться опцией -nocopy, которая предписывает nnBackup имитировать весь цикл работы (в соответствии с заданными опциями), но не производить физического копирования файлов.

Перепишем все вышеприведенные примеры так, чтобы файл-листы создавались, но файлы при этом не копировались:

nnbackup.exe copy -i c:\data -o d:\backup -s -v -list filelist.txt -nocopy

Расшифровка: создать файл-лист (filelist.txt), содержащий все файлы из каталога c:\data и всех его подкаталогов.

nnbackup.exe copy -i c:\data -o d:\backup -m *.doc,*.rtf -s -v -list filelist.txt -nocopy

Расшифровка: создать файл-лист (filelist.txt), содержащий все *.doc и *.rtf файлы из каталога c:\data и всех его подкаталогов.

nnbackup.exe copy -i c:\data -o d:\backup -m *.doc,*.rtf -D 01.01.2003 -s -v -list filelist.txt -nocopy

Расшифровка: создать файл-лист (filelist.txt), содержащий все *.doc и *.rtf файлы, изменившиеся или появившиеся с 01.01.2003 из каталога c:\data и всех его подкаталогов.

Помимо создания (генерации) файл-листов, nnBackup умеет принимать их в качестве аргумента для дальнейшей обработки (копирования файлов, синхронизации и т. д.). Если у вас есть файл-лист (созданный с помощью nnBackup или другой программы), то вы можете передать его в качестве аргумента к опции -i, используя специальный синтаксис @filename. Представим, что перед нами файл-лист files.txt:

c:\data\1.txt
c:\data\2.txt
c:\data\3.txt
c:\data\4.txt
c:\data\5.txt
c:\data\6.txt

Передаем его "на обработку" nnBackup:

nnbackup.exe sync -i @files.txt -o d:\backup\data -v
nnbackup.exe copy -i @files.txt -o d:\backup\data -v

Таким образом, вы можете указывать в качестве аргумента для опции -i не только каталоги, но и списки файлов (файл-листы).

Режим удаления неактуальных данных из резервной копии предоставляет специальный синтаксис для работы с файл-листами: опции -il и -il-. Используйте опцию -il, если вы составили полный список файлов указанного каталога и теперь хотите им воспользоваться, чтобы удалить из приемного каталога все файлы, которые в этом списке отсутствуют. Опция -il- действует "обратным" образом: вместо того, чтобы удалять из приемного каталога файлы, отсутствующие в списке, она предписывает nnBackup удалить из приемного каталога все файлы присутствующие в списке.

"Изюминка" этих опций заключается в том, что nnBackup не проверяет физического наличия файлов из списка. Значит, составив список файлов, вы можете легко очистить приемный каталог, даже не имея под рукой копии исходного каталога (например, на других машинах): все что вам нужно - это сам список файлов и программа nnBackup.

Вот как это делается. Сначала создадим полный список файлов в исходном каталоге (filelist.txt):

nnbackup.exe copy -i c:\data -o c:\temp -v -s -list filelist.txt -nocopy

Для использования с опцией -il- можно создать список "ненужных" файлов, подлежащих удалению (filelist_del.txt):

nnbackup.exe delabsent -i c:\data -o d:\backup\data -v -s -list3 filelist_del.txt -nocopy

Теперь, вооружившись созданными списками, мы можем удалить устаревшие файлы на всех машинах, до которых можем добраться. Наличие исходного каталога на этих машинах необязательно, ведь nnBackup все равно не будет проверять физическое наличие файлов из списка:

nnbackup.exe delabsent -il filelist.txt -o f:\another_backup\data -s -v
nnbackup.exe delabsent -il- filelist_del.txt -o f:\another_backup\data -s -v