rsync - удаляют - files-from=list / dest/, не удаляет нежелательные файлы

taskkill /im myprocess.exe /f

"/f" для "силы". Если Вы знаете PID, то можно определить что, как в:

taskkill /pid 1234 /f

Партии других опций возможны, просто вводят taskkill/? для всех них. "/t" опция уничтожает процесс и любые дочерние процессы; это может быть полезно для Вас.

25
задан Dominik 18 June 2019 в 03:10
поделиться

2 ответа

Возможно, вы могли бы сделать это, используя вместо этого список включаемых шаблонов, и использовать - -delete-excluded (что делает, как следует из названия)? Что-то вроде:

rsync -r --include-from=<patternlistfile> --exclude=* --delete-excluded / dest/

Если имена файлов могут содержать символы подстановки ( * , ? и []), вам может потребоваться изменить Python, чтобы избежать их. :

re.sub("([[*?])", r"\\\1", "abc[def*ghi?klm")

Редактировать: Сопоставление на основе шаблонов работает несколько иначе, чем - files-from в том, что rsync не рекурсивно перемещается в каталоги, соответствующие шаблону исключения, для причины эффективности. Итак, если ваши файлы находятся в / some / dir и / some / other / dir , то ваш файл шаблона должен выглядеть так:

/some/
/some/dir/
/some/dir/file1
/some/dir/file2
/some/other/
/some/other/dir/
/some/other/dir/file3
...

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

rsync -r --include-from=<patternlistfile> --exclude=* --delete-excluded /some/dir/ dest/

, и тогда ваши шаблоны станут:

/file1
/file2

Edit: Подумав об этом, вы можете включить все каталоги с одним шаблоном:

/**/

но тогда вы получите все дерево каталогов в dest / , что, вероятно, не то, что вам нужно. Но объединение его с -m (которое удаляет пустые каталоги) должно решить эту проблему - поэтому команда заканчивается примерно так:

rsync -m -r --delete-excluded --include-from=<patternfile> --exclude=* / dest/

и файл шаблона:

/**/
/some/dir/file1
/some/other/dir/file3
18
ответ дан 15 October 2019 в 06:39
поделиться

rsync идеально подходит для хранения каталоги в синхронизации, среди прочего. Если у вас есть точная копия на ИСТОЧНИКЕ, и вы хотите удалить файлы в DEST, вы можете удалить их из SOURCE, и опция rsync --delete удалит их также и из DEST.

Однако , если у вас есть произвольный список файлов, которые вы хотите удалить, я предлагаю вам использовать для этого SSH:

ssh user@remote.host.com rm /path/to/file1 /path/to/file2

Это выполнит команду rm на удаленном хосте.

Используя python, вы можете:

import subprocess
FileList = ['/path/to/file1', '/path/to/file2']
subprocess.call(['ssh', 'dAnjou@my.server.com', 'rm'] + FileList)

~ наслаждаться

-1
ответ дан 15 October 2019 в 06:39
поделиться
Другие вопросы по тегам:

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