Действительно ли это возможно с rsync?
Передайте все от src:path/to/dir
кому: dest:/path/to/other/dir
и удалите некоторые исходные файлы в src:path/to/dir
то соответствие шаблон (или предел размера), но сохраняет все другие файлы. Я не мог найти способ ограничить --remove-source-files
с regexp или пределом размера.
Update1 (разъяснение): я хотел бы все файлы в src:path/to/dir
быть скопированным в dest:/path/to/other/dir
. После того как это сделано, я хотел бы иметь некоторые файлы (те, которые соответствуют regexp или пределу размера) в src:path/to/dir
удаленный, но не хочу удалять что-либо в dest:/path/to/other/dir
.
Update2 (больше разъяснения): К сожалению, я не могу просто rsync все и затем вручную удалять файлы, соответствующие моему regexp от src:. Файлы, которые будут удалены, непрерывно создаются.
Так скажем, существуют файлы N типа, который я хотел бы удалить после передачи в src: когда rsync запускается. К этому времени rsync концы будет N+M такие файлы там. Если я теперь удалю их вручную, то я потеряю файлы M, которые были созданы, в то время как rsync работал.
Следовательно я хотел бы иметь решение, которое гарантирует, что единственные файлы удалили из src: те, которые, как известно, были успешно скопированы в dest:. Я мог выбрать список файлов от dest: после того, как rsync завершен, и сравните тот список файлов с тем, что я имею в src: и затем сделайте удаление вручную. Но я задавался вопросом, может ли rsync сделать это отдельно.
Вы хотите удалить перед передачей или после? Таким образом, должен dest: имеют удаленные файлы?
Я подозреваю, что самый легкий путь состоит в том, чтобы сделать их как отдельные команды. Использовать find | xargs rm
удалить желаемые файлы (возможно, добавляющий egrep
к каналу, если regex сложен), и rsync
сделать копию. Порядок выполнения будет определен ответом на мой вопрос в первом абзаце.