Unix и Linux имеют ряд встроенных инструментов сравнения файлов. Какой бы инструмент вы ни использовали, потребуется доступ как к файлу, находящемуся в Solaris, так и к файлу Linux - как этого добиться - другой вопрос, но вы можете скопировать файлы в одну систему или поделиться ими через общие сетевые ресурсы.
Предполагая, что сравниваемые файлы выглядят как
/linux/filename.txt
и
/solaris/filename.txt
Вы можете сравнить их с помощью команды
diff / linux /filename.txt /solaris/filename.txt
Для двоичных файлов или очень больших файлов, которые вы не хотите передавать по сети, вы можете использовать контрольные суммы, чтобы определить идентичность файлов. Контрольные суммы md5 могут быть сгенерированы в системе, где находится файл, а затем результат может быть скопирован для сравнения. Например, чтобы получить контрольную сумму md5 в Solaris, вы можете использовать
digest -a md5 filename
В Linux того же можно добиться, используя
md5sum filename
Результат может быть скопирован - вставлены или переданы по сети в одну систему.
Если вы помещаете каждую контрольную сумму md5 в новую строку файла, чтобы проверить, все ли они идентичны, используйте команду sort unique. Он напечатает каждую "сумму md5", которая является уникальной, поэтому, если файлы предполагаются идентичными, вы можете ожидать только одну строку вывода от такой команды, как
sort -u md5sum_results.txt
Обновление: { {1}} Поскольку вы переносите свою работу с Solaris на Linux, я бы предложил следующий общий подход.
Создайте резервную копию на стороне Solaris.Есть слишком много способов даже начать думать обо всех из них, но cpio - мой выбор по многим причинам, особенно потому, что он хорошо справляется со странными типами файлов:
find / source / directory | cpio -oV> /backup/data.cpio
Проверьте контрольную сумму этого файла:
digest -a md5 /backup/data.cpio
Скопируйте файл через сеть, возможно, используйте:
scp /backup/data.cpio user @ linuxhost: / incoming
Другие варианты включают NFS-монтирование, rsync и многие другие способы.
На стороне Linux проверьте, что файл не был изменен:
md5sum /incoming/data.cpio
Если контрольная сумма MD5 совпадает, извлеките резервную копию:
cd / target / directory; cpio -iV
Примечание: scp вряд ли «повредит» ваш файл. Если вы пропустили проверку контрольной суммы, cpio обычно (всегда, но не со стопроцентной гарантией) обнаружит повреждение). Контрольные суммы md5 повысят вашу уверенность в файле, но редко нужно переходить на этот уровень.
Вы можете использовать вызовы семейства truncate() (ftruncate() и т.д.) не только для уменьшения, но и для расширения файлов. Просто «усекните» их до большего размера, чем их текущий. На файловых системах, поддерживающих файлы с дырами в них, это будет быстро, намного быстрее, так как добавление необходимых нулевых блоков в конец файлов.
Дословный ответ на ваш вопрос: :Нет, в AIX нет команды fallocate. AIX предоставляет библиотечный вызов posix _fallocate ().
Подробнее:
root@x066:[/data/prj/python/python3-3.6.8]find /usr/include -name \*.h | xargs egrep "(fallocate|truncate)64\("
/usr/include/unistd.h: extern int ftruncate64(int, off64_t);
/usr/include/unistd.h: extern int truncate64(const char *, off64_t);
root@x066:[/data/prj/python/python3-3.6.8]find /usr/include -name \*.h | xargs egrep "(fallocate|truncate)\("
/usr/include/fcntl.h:extern int posix_fallocate(int,off_t,off_t);
/usr/include/sys/fp_io.h:fp_ftruncate( struct file *fp,
/usr/include/sys/fp_io.h:extern int fp_ftruncate();
/usr/include/unistd.h: extern int ftruncate();
/usr/include/unistd.h: extern int truncate();
/usr/include/unistd.h: extern int ftruncate(int, off_t);
/usr/include/unistd.h: extern int truncate(const char *, off_t);
Что касается dd, предоставляющего «разреженный» файл, а не блокирующего пространство. Насколько я понимаю, это определение «разреженного» файла -, занятого логического пространства, а не физического пространства. Кроме того, :dd, если аргумент «поиск» не указан, то файл не должен быть разреженным -, но потребует времени и усилий подсистем ввода-вывода.
Да -намного позже с ответом -, но это потому, что я изучаю fallocate в AIX -и возможную ошибку, которую я обнаружил в приложении, использующем вызов fallocate ()(!, на самом деле posix _выделить ())в AIX.
Надеюсь, это поможет!