Есть ли в AIX команда, похожая на fallocate в Linux

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, я бы предложил следующий общий подход.

  1. Создайте резервную копию на стороне Solaris.Есть слишком много способов даже начать думать обо всех из них, но cpio - мой выбор по многим причинам, особенно потому, что он хорошо справляется со странными типами файлов:
    find / source / directory | cpio -oV> /backup/data.cpio

  2. Проверьте контрольную сумму этого файла:
    digest -a md5 /backup/data.cpio

  3. Скопируйте файл через сеть, возможно, используйте:
    scp /backup/data.cpio user @ linuxhost: / incoming

Другие варианты включают NFS-монтирование, rsync и многие другие способы.

  1. На стороне Linux проверьте, что файл не был изменен:
    md5sum /incoming/data.cpio

  2. Если контрольная сумма MD5 совпадает, извлеките резервную копию:
    cd / target / directory; cpio -iV

Примечание: scp вряд ли «повредит» ваш файл. Если вы пропустили проверку контрольной суммы, cpio обычно (всегда, но не со стопроцентной гарантией) обнаружит повреждение). Контрольные суммы md5 повысят вашу уверенность в файле, но редко нужно переходить на этот уровень.

2
22.04.2017, 14:45
2 ответа

Вы можете использовать вызовы семейства truncate() (ftruncate() и т.д.) не только для уменьшения, но и для расширения файлов. Просто «усекните» их до большего размера, чем их текущий. На файловых системах, поддерживающих файлы с дырами в них, это будет быстро, намного быстрее, так как добавление необходимых нулевых блоков в конец файлов.

-1
27.01.2020, 23:10

Дословный ответ на ваш вопрос: :Нет, в 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.

Надеюсь, это поможет!

0
27.01.2020, 23:10

Теги

Похожие вопросы