Как удалить пустые исходные каталоги когда движущиеся папки с rsync?

Один способ сделать это состоит в том, чтобы создать пакетный файл с соответствующими командами.

build.bat

%SystemRoot%\system32\WindowsPowerShell\v1.0\powershell.exe -command "& 'c:\scripts\build_project.ps1' "

Необходимо будет передать параметры командной строки от пакетного файла до сценария, если сценарий PS использует их. Необходимо будет также загрузить все powershell модули использование сценария:

Add-PSSnapin Module-Name
8
задан 11 January 2015 в 15:38
4 ответа

Я не нашел команды, которая бы делала это за один раз, но поскольку rsync по-прежнему работает лучше, чем rm -rf (особенно, если у вас очень большое количество каталогов), вот две команды rsync, которые выполните "перемещение" :

rsync -av --ignore-existing --remove-source-files source/ destination/ && \
rsync -av --delete `mktemp -d`/ source/ && rmdir source/
4
ответ дан 2 December 2019 в 22:53

Почему бы просто не добавить rm -rf source_directory после вашего rsync?

rsync -axvvES --remove-source-files source_directory /destination/ && rm -rf source_directory

Каждая программа командной строки (в идеале) создана для выполнения указанной задачи, и это '

2
ответ дан 2 December 2019 в 22:53

Использование « rm -rf » имеет присущее состояние гонки, вы можете удалить файлы, которые только что были созданы между rsync и ] rm вызовы.

Я предпочитаю использовать:

rsync --remove-source-files -a server:incoming/ incoming/ && 
ssh server find incoming -type d -delete

Это НЕ удалит каталоги, если они не пусты.

5
ответ дан 2 December 2019 в 22:53

Я оказался в похожей ситуации. Я хотел избежать использования rm -rf , зная, что rsync не может скопировать некоторые файлы, и я не хотел их терять.

Чтобы просто удалить пустые каталоги, я нашел этот самый удобный (из sourcedir ):

find . -type d -empty -delete
2
ответ дан 2 December 2019 в 22:53

Теги

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