Удалите файлы на месте назначения, которые найдены в источнике с помощью rsync

Michael уже предоставил решение для устранения проблем зависимости. Только отметить далее, apt-get upgrade обновил бы все установленные пакеты. Если Вы хотите обновить только единственный пакет, использовать apt-get install package_name. Для PHP это, вероятно, было бы apt-get install php5.

Кроме того, если существует частая проблема обновить источники пакета, можно вернуться назад к "официальным спискам пакета" для распределения. Исходный Генератор Списка Debian обеспечивает интерактивный интерфейс для генерации исходных списков для любого распределения.

3
05.09.2014, 08:25
2 ответа

я не думаю, что rsync может это сделать, но вы можете составить список файлов, изменить этот список и скопировать его как скрипт по назначению.

Предположим, что имена ваших файлов не содержат новых строк или одинарных кавычек ('), запустите это на исходном компьютере:

cd basedir
find . -type f | sed 's/^/rm -f '\''/' | sed 's/$/'\''/' > /var/tmp/to_remove

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

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

find . -depth -type d | sed 's/^/rmdir -f '\''/' | sed 's/$/'\''/' > /var/tmp/to_remove
3
27.01.2020, 21:19
cd a
find . -type f -print0 | ssh ${server_name} "cd $path_to_b;cat | xargs -0 rm"
ssh ${server_name} "find ${path_to_b} -empty -type d -delete"

Вы получите сообщения об ошибках для файлов, которые не существуют на b. Вторая команда удаляет пустые папки по назначению.

1
27.01.2020, 21:19

Теги

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