Как сохранить числовые идентификаторы / идентификаторы в CPIO независимо от имен пользователей / групп в среде извлечения?

Мне нужен cpio для сохранения числового uid/gid файлов и каталогов из архива, который был сгенерирован в исходной системе, даже если в целевой системе существуют имена пользователей / групповые имена с другими значениями uid/gid по сравнению с исходной системой.

Чтобы проиллюстрировать проблему, см. Код теста ниже. Теперь, когда пример создан для удовлетворения моей потребности в создании архива объемом более 15 ГБ, поэтому в команде cpio я использую формат ustar. Кроме того, хотя пример представляет собой всего лишь один каталог, в реальном случае архивируется множество файлов и каталогов.

В исходной системе

groupadd -g 8801 testgroup
useradd -u 7701 -g 8801 testuser
mkdir testdir
chown testuser:testgroup testdir

find testdir -depth -print0 | cpio --format=ustar --null --quiet -o > test.cpio

tar --format=pax -cpf test.tar testdir  # Used for workaround

После выполнения вышеизложенного stat показывает следующее право собственности на тестовый каталог:

  File: ‘testdir’
  Size: 6           Blocks: 0          IO Block: 4096   directory
Device: fd01h/64769d        Inode: 604215717   Links: 2
Access: (0755/drwxr-xr-x)  Uid: ( 7701/testuser)   Gid: ( 8801/testgroup)
Access: 2017-11-09 07:33:57.145949971 -0500
Modify: 2017-11-09 07:33:57.145949971 -0500
Change: 2017-11-09 07:33:57.147950056 -0500
 Birth: -

Имитация: на целевой системе

userdel -r testuser
groupdel testgroup
rmdir testdir

groupadd -g 8802 testgroup
useradd -u 7702 -g 8802 testuser
cpio --format=ustar --null --quiet -idm < test.cpio

После выполнения вышеприведенной статистики показано следующее право собственности на тестовый каталог:

  File: ‘testdir’
  Size: 6           Blocks: 0          IO Block: 4096   directory
Device: fd01h/64769d        Inode: 687704110   Links: 2
Access: (0755/drwxr-xr-x)  Uid: ( 7702/testuser)   Gid: ( 8802/testgroup)
Access: 2017-11-09 07:33:57.000000000 -0500
Modify: 2017-11-09 07:33:57.000000000 -0500
Change: 2017-11-09 07:34:52.629304320 -0500
 Birth: -

Временное решение

Я могу успешно сохранить числовое владение, если я использую tar с --numeric-owner опция:

tar --numeric-owner --format=pax -xpf test.tar

Итак, мой вопрос: есть ли способ сохранить uids/gids с помощью cpio, даже если целевая система имеет те же имена пользователей / группы, что и исходная система, но с другими числовыми значениями? Подход к архивированию должен поддерживать большие архивы> 15 ГБ. Сжатие не нужно, потому что мои данные в основном двоичные.

Моя среда - CentOS 7.4.

0 ответов

Другие вопросы по тегам