1

Я работаю в небольшой юридической фирме, которая хранит несколько терабайт документов в общей сетевой папке на одной из рабочих станций в их офисе. Я настраиваю их с выделенным отказоустойчивым NAS. Им нужен бумажный журнал передачи или, по крайней мере, бумажный аудит, который подтверждает, что каждый файл, который существует на их старом сервере, существует на новом сервере. Как я могу это сделать?

Достаточно будет рекурсивного перечисления содержимого обоих каталогов и простого diff , но я уверен, что я не единственный, у кого есть такая необходимость. Хуже всего то, что я могу написать сценарий оболочки (должен быть рекурсивный вариант для ls верно?) выведите содержимое в файл и разведите файлы.

Было бы предпочтительнее, если бы это было выполнимо в Windows. Я не так хорошо знаком с Powershell/batch, как с bash, но все офисные машины работают под управлением Windows, и я бы хотел установить его на ночь и забыть. В противном случае мне, возможно, придется оставить свой ноутбук на ночь, чтобы скрипт bash справился со своей задачей.

2 ответа2

2

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

xcopy /s /v SourceDir TargetDir >xcopy.log 2>&1

После его завершения вы можете быстро проверить, что сбоев не было:

xcopy /s /d /v SourceDir TargetDir >xcopyFailures.log 2>&1

Второй журнал должен быть пустым, но в противном случае должно быть очень мало записей.

Если вы хотите использовать Linux, вы можете добиться аналогичных результатов с помощью rsync -axv ... Обратите внимание, что если вы хотите выполнить быструю проверку, повторив команду, вам нужно сравнить разрешение метки времени файла в исходном и целевом каталогах и, если необходимо, использовать --modify-window при втором вызове.

0

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

cd к корню нового сервера

dir -Recurse | Out-File 'path\to\CONTENTS_NEWSERVER.txt'

cd к корню старого сервера

dir -Recurse | Out-File 'path\to\CONTENTS_OLDSERVER.txt'

Это создало два файла ... бумажный след!

После этого я просто запустил Compare-Object, чтобы подтвердить все, что мне нужно было знать (и тоже сохранил этот файл).

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

Я отметил ответ AFH как правильный из-за признательности, и потому что он объяснил его в терминах CMD/ партия, что приятно иметь.

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