У меня есть такое требование:
У меня есть два каталога: 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, если вы хотите сэкономить немного времени.