Как я могу управлять командой находки для “нахождения” каталогов, в которых находится “найденный” файл?

http://support.microsoft.com/kb/317189

Программы или Программы установки могут запланировать файл, который будет переименован на следующем перезапуске Windows NT, если программе будут препятствовать переименовать файл, потому что файл находится в памяти.

Windows NT проверяет, что ключ реестра для файла - переименовывает операции, которые будут завершены рано в процессе начальной загрузки. Если файл - переименовывает операцию, не может быть завершен, потому что файл или папка не существуют, сообщение об ошибке сгенерировано.

Не симпатичный, но необходимо удалить ключи реестра, которые пытаются работать, отложенный переименовывают операцию:

HKEY_LOCAL_MACHINE\System\ControlSetXXX\Control\Session Manager
HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\RunOnce
HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\RunOnceEx
    PendingFileRenameOperations

При чтении статьи базы знаний Вы почти были бы более обеспеченной установкой нового сервера.

5
задан 11 March 2014 в 12:10
1 ответ

В этой командной строке есть две проблемы:

find. -mtime -2 -exec rsync -av {} / destination / \; `

Передача имен путей

Во-первых, при присвоении (одиночных) имен файлов в rsync , а не просто каталог, он необходимо явно указать использовать весь путь, а не только имя файла для пункта назначения. Для этого используйте параметр -R . От страницы руководства к rsync (1):

-R, --relative Use relative paths. This means that the full path names specified on the command line are sent to the server rather than just the last parts of the filenames. This is particularly useful when you want to send several different directories at the same time. For example, if you used this command: rsync -av /foo/bar/baz.c remote:/tmp/ ... this would create a file named baz.c in /tmp/ on the remote machine. If instead you used rsync -avR /foo/bar/baz.c remote:/tmp/ then a file named /tmp/foo/bar/baz.c would be created on the remote machine, preserving its full path. These extra path elements are called "implied directories" (i.e. the "foo" and the "foo/bar" directories in the above example). [...]

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

Искать только файлы, а не каталоги

Во-вторых, find , вызываемый как указано выше, будет сообщать не только файлы, но и каталоги. Когда имя каталога дается rsync в качестве источника, он синхронизирует весь каталог с местом назначения. Этого можно избежать, используя дополнительный тест -тип f («тип должен быть файлом») для find . Однако имейте в виду, что при этом будут исключены не только каталоги, но и сокеты, именованные каналы, блочные и символьные устройства, а также символические ссылки. Для символических ссылок вместо этого вы можете использовать параметр -xtype , который будет проверять тип целевой символической ссылки.

Решение

Итак, измененная командная строка будет выглядеть так:

find . -type f -mtime -2 -exec rsync -av -R {} / destination / \;

Это найдет все файлы ( -type f ) в текущем пути (. ), которые были изменены в течение последних двух дней ( -mtime -2 ), и для каждого из них:

7
ответ дан 3 December 2019 в 01:25

Теги

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