BASH скрипт для копирования файлов по дате, с уловом - PullRequest
1 голос
/ 01 июля 2010

Позвольте мне объяснить древовидную структуру: у меня есть сетевой каталог, в который несколько раз в день новые .txt файлы копируются нашей базой данных. Эти файлы находятся в каталоге на основе имен пользователей. На локальном диске у меня та же структура (каталог, основанный на именах пользователей), и я должен быть обновлен последними файлами .txt. Это не процедура синхронизации: я копирую удаленный файл в локальный пункт назначения, и мне все равно, что будет с ним после этого, поэтому мне не нужно его синхронизировать. Однако мне нужно копировать ТОЛЬКО новые файлы, а не те, которые я уже скопировал. Это будет выглядеть примерно так:

Удаленный диск

/ mnt / remote / database
+ user1 /
+ user2 /
+ user3 /
+ user4 /

Локальный диск

/ var / database
+ user1 /
+ user2 /
+ user3 /
+ user4 /

Я играл с

find /mnt/remote/database/ -type f -mtime +1

и другие варианты, но это не очень хорошо работает.

Итак, сценарий, который я пытаюсь изобразить, следующий:
1 - проверить / mnt / remote / database рекурсивно для * .txt
2 - проверьте дату файлов, чтобы увидеть, являются ли они новыми (с тех пор, как я проверял в последний раз, возможно, сохраните текстовый файл с последней проверкой на нем в качестве ссылки?)
3 - если файл новый, скопируйте его в соответствующий пункт назначения в / var / database (поэтому /mnt/remote/database/user1/somefile.txt будет скопирован в / var / database / user1 /)

Я буду запускать скрипт через задание cron.

Я делаю это в C прямо сейчас, но ИТ-специалисты не очень хороши в отладке или написании C, и если им нужно добавить или исправить что-то, они могут лучше обрабатывать bash-скрипты, а я не очень хорош в этом.

Есть идеи?

спасибо!

Ответы [ 3 ]

3 голосов
/ 01 июля 2010

Вы можете рассмотреть возможность использования локальной rsync между каталогами ввода и вывода. в нем есть все параметры, которые вы хотите сделать своей политикой синхронизации очень гибкими.

1 голос
/ 01 июля 2010
1 голос
/ 01 июля 2010
find /mnt/remote/database/ -type f -newer $TIMESTAMP_FILE | xargs $CP_COMMAND
touch $TIMESTAMP_FILE
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...