Назад | Перейти на главную страницу

Как сравнить метку времени одного и того же файла, находящегося в двух разных каталогах

У меня есть такое требование:

У меня есть два каталога: DIR1 и DIR2. Файлы DIR1 регулярно обновляются по мере необходимости. Затем обновленные файлы копируются в DIR2. Поэтому мне нужно написать сценарий оболочки, который сообщит нам, все ли файлы в DIR2 обновлены или нет. Это необходимо для того, чтобы убедиться, что все необходимые файлы были правильно скопированы из DIR1 в DIR2.

Может ли кто-нибудь помочь мне, как я сравню метку времени файла между двумя каталогами.

/home/user/DIR1]ls -l
-rwxrwxr-x   1 user  group          509 Jan 08 2009 file_1.dat 
-rwxrwxr-x   1 user  group           11 Sep 29 12:19 file_2.dat

/home/user/DIR2]ls -l
-rwxrwxr-x   1 user  group          509 Jan 08 2008 file_1.dat 
-rwxrwxr-x   1 user  group           40 Oct 21 12:19 file_2.dat

Спасибо и привет, Прасенджит

Я думаю, что лучший подход здесь - посмотреть, как вы на самом деле обновляете файлы в DIR2. Вместо того, чтобы потом сравнивать их, используйте такой инструмент, как rsync сделать копию. Например, в rsync вы можете запустить эту команду:

rsync -auv --delete /path/to/dir1/* /path/to/dir2/

Это скопирует все более новые файлы в dir1 в dir2 и удалит все файлы, которые больше не существуют в dir1. По сути, это надежное «обновление» папок без траты времени на копирование уже обновленных файлов.

Использовать stat -c %Y /some/filename чтобы получить время модификации файла, которое затем можно сравнить обычным способом. Также рассмотрите возможность использования cp -u, который копирует файлы только с более новой версией mtime, если вы хотите сэкономить немного времени.