Удалите файлы, которые существуют в источнике с rsync

посмотрите ниже

/ расширенный

grep понимает три различных версии синтаксиса регулярного выражения: “основной”, “расширенный” и “жемчуг”. В GNU grep, нет никакого различия в доступной функциональности между основными и расширенными синтаксисами. В других реализациях основные регулярные выражения менее мощны. Следующее описание относится к расширенным регулярным выражениям; различия для основных регулярных выражений получены в итоге впоследствии. Регулярные выражения Perl дают дополнительную функциональность, и документируются в pcresyntax (3) и pcrepattern (3), но не могут быть доступными в каждой системе.

Так, еще раз.

В GNU grep, нет никакого различия в доступной функциональности между основными и расширенными синтаксисами

1
22.08.2013, 01:24
3 ответа

Я не думаю, что rsync может разрешить Вашу проблему. Но другой синхронизирующий инструмент смог помогать Вам. Смотрите на унисон.

Унисон имеет много функций и может синхронизировать две папки на различных машинах. Унисон записан в OCaml, который является очаровательным functionional языком.

Rsync является однонаправленным синхронизирующим инструментом. Унисон является двунаправленным синхронизирующим инструментом.

-1
28.01.2020, 02:13
  • 1
    спасибо. я использовал ряд сценариев для выполнения то, что я хотел, но это могло бы работать. –  chovy 21.08.2013, 10:46
  • 2
    Как Унисон помог бы здесь? Цель не состоит в том, чтобы синхронизировать эти два каталога вообще. –  Gilles 'SO- stop being evil' 22.08.2013, 01:26
  • 3
    после рассмотрения унисона, я полагаю, что это был просто общий ответ, действительно не читая проблему, с которой я сталкиваюсь. –  chovy 22.08.2013, 08:33
  • 4
    может сохранить две папки на другой синхронизации машины. Если clientA удалят некоторые файлы, то clientB удалит некоторые файлы также! большое спасибо –  Edward Shen 23.08.2013, 04:49

Инструменты копии файла, такие как rsync не собираются помогать Вам легко, так как Вы не хотите копировать любые файлы.

Простой подход списка файлов на сервере A и стирание этих файлов на сервере B является хорошим при большинстве обстоятельств. Легче справиться с произвольными именами файлов если Ваши серверы find и xargs команды понимают пустые разделители (Linux, *BSD, Cygwin). От A:

cd ./delete
find . ! -type d -print0  | ssh B 'cd /path/to/stuff && xargs -0 rm -f'

Это может оставить некоторые пустые каталоги. Можно удалить все пустые каталоги (даже те, которые были пусты прежде) с

ssh B 'cd /path/to/stuff && find . -depth -type d -exec rmdir {} + 2>/dev/null'

Если Вы только захотите удалить каталоги, которые существовали на исходной стороне, то необходимо будет использовать список снова:

find . -depth -type d -print0  | ssh B 'cd /path/to/stuff && xargs -0 rmdir'

Если существуют деревья каталогов на, которые содержат много файлов и не существуют на B, это передает целый список файлов для стирания где хорошо подобранное rm -rf на B сделал бы ту же работу локально над B, но сохранит много пропускной способности в передаче. Это - вид ситуации, где инструмент синхронизации файлов достиг бы хорошего результата. Вы могли работать rsync -nv и попытайтесь проанализировать вывод, но не легко создать что-то надежное на этом.

0
28.01.2020, 02:13
  • 1
    это только работает над файлами. не каталоги, и я полагаю, что это удаляет файлы из A, не B. –  chovy 22.08.2013, 08:32
  • 2
    @chovy ответа Действительно, я неправильно читал Ваш вопрос. Я не думаю, что инструменты синхронизации файлов помогут многому, так как Вы не копируете файлы. Хотя, хм, мог бы быть способ создать что-то с rsync --remove-source-files --compare-dest –  Gilles 'SO- stop being evil' 23.08.2013, 02:33
  • 3
    я не понимаю что --compare-dest делает. –  chovy 25.08.2013, 00:13

Я тоже хотел сделать это и решил просто написать для этого ruby-скрипт.

Вот так:

https://github.com/saizai/utils/blob/master/rm_dupes_from.rb

0
28.01.2020, 02:13

Теги

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