Как сохранить числовые идентификаторы / идентификаторы в 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.