РЕДАКТИРОВАТЬ: Я вижу, что кто-то проголосовал за то, чтобы закрыть это как "слишком широкий вопрос", но в последний раз, когда я писал, спрашивая, как сделать что-то, меня попросили предоставить более подробную информацию очто и почему я хотел сделать это.Так что ... не могу победить!Я задаю только один вопрос: «Как действовать удаленная копия папки при изменении локальной копии».Я не спрашиваю, как переименовать, перенумеровать или сделать zip-файлы, а просто объясняю, что это то, что мне нужно сделать как часть копии.Я действительно не могу придумать менее подробный способ задать этот вопрос без очевидного (но неправильного) ответа «просто используйте rsync».
Я хочу автоматически копировать папки на основе завершенной загрузки в папку Dropbox (другие службы могут добавлять файлы тоже) в Ubuntu 18.04.Мне нужно:
- Оставить исходную папку без изменений.
- Числовое добавление префиксов к именам файлов, если это еще не сделано - (
find . -name '[[:digit:]]*.mp3'
и т. Д.) - Очистка имен файлов апострофов (например, " detox ").
- Создать папку на удаленной стороне.
- Повторное копирование и повторное создание папки zip на удаленной копии, если что-либо изменится в исходной папке в будущем.
Пример: папка SOURCE на 20190203
apostrophe's.mp3
track01.mp3
zebra 4.mp3
УДАЛЕННАЯ папка 20190203 (после обработки)
01-apostrophes.mp3
02-track01.mp3
03-zebra4.mp3
20190302.zip
Если удаленный пользователь должен был добавить chickens.mp3 и удалить apostrophe's.mp3 в исходной папке aЧерез месяц процесс обновит удаленную папку, повторно скопировав и переименовав папки, и автоматически перестроит zip-файл.
Все отдельные файлы, которые могут быть загружены, имеют размер менее 10 МБ, поэтому даже самый медленныйподключение не может занять более 15 минут для загрузки какого-либо одного файла, но это может занять до 45 минут для загрузки всей папки.
Я не могу проверить изменения в зависимости от размера папки, номерафайлов или даты модификации, потому что действие добавления zip-файла в удаленную папку изменит все эти.
В настоящее время у меня есть почасовой crontab, выполняющий скрипт, содержащийОб этом:
SCANDIRS="$(find $BASEDIR -type f -mmin +15 -mmin -45 -printf "%h\\n" | sort -u | xargs -n 1 realpath)"
Затем он перебирает скандиры и делает магию, но это, вероятно, имеет много проблем, которые я не предвидел, может работать только один раз в час, и нене позволяет обновлять более старые папки.
Я знаю, что rsync -av --delete
с обычным crontab будет работать, если это будет просто файлов, но я полностью застрял в том, как сделать то, что яхочу.Скопированные папки будут находиться в одной и той же локальной файловой системе (тогда вы можете s3 sync
редактировать удаленно, если хотите знать!).
Я думаю, inotifywait может быть решением, но я 'Я не уверен, как решить проблему «подождите, пока папка не будет работать в течение определенного времени, но разрешите будущие обновления в любое время».
Спасибо.