LINUX.ORG.RU
ФорумAdmin

возвращаясь к вопросу tar ball - разъясните пожалуйста

 ,


0

2

Привет. Постараюсь быть лаконичнее:

Необходимо заархивировать корневой раздел системы, записать в архив информацию о владельцах файлов, разграничении доступа к файлам, а после все это разархивировать на другом домене. Да так, что бы учитывались права и владельцы файлов.

Помогите скорректировать метод.

Как делал я: На номинальной системе: mkdir chrt; mount /dev/sda1 /chrt; tar -cvpzf --xattrs --acls ... тут набор инклудов и эксклудов под себя

После чего я получаю domain.tar.gz который добавляю в директорию build утилиты simple-cdd и, так как размер архива ~10 гб, немного переделываю команду xorriso (iso-level 3), в ручную создаю загрузочный образ. Гружусь, ставлю систему. Открываю терминал установщика.

tar -xvpzf -C /target - получаю ошибку invalid tar magic. Почитал немного, понял что tar из busybox отличается от полной версии.

chroot /target ; tar -xvpzf -C / --numeric-owner - архив благополучно распаковывается по верх.

ls -all /home вледелец всех дириктори - root.

Я подумал, что возможно, это из-за того, что на момент распаковки в системе не было соответствующих пользователей в системе. Перезагружаюсь, захожу из под user - успешно. То есть /etc/passwd и другие системные файлы благополучно скопировались. ls -all /home вледелец всех дириктори - root.

su root затем тщетные попытки разпаковки с другими ключами. Подскажите, в чем моя ошибка?

Спасибо.

$ touch file1 && sudo chown mail:mail file1
$ ll
total 0
-rw-r--r-- 1 mail mail 0 Dec  4 21:53 file1
$ whoami
yorween
$ sudo tar cf file1.tar file1
$ ll file1.tar
-rw-r--r-- 1 root root 10K Dec  4 21:54 file1.tar
$ rm -f file1
removed 'file1'
$ sudo tar xf file1.tar 
$ ll file1
-rw-r--r-- 1 mail mail 0 Dec  4 21:53 file1
Yorween
()
Ответ на: комментарий от legolegs

Legolegs, я писал пост с телефона по памяти, во время эксперимента синтаксис верный.

Yourween, да на домене у меня тоже оно корректно распаковывается. На другой машине - нет. Попробую по вашему примеру.

swagcat228
() автор топика
Ответ на: комментарий от swagcat228

Разобрался в чем проблема.

Дело в том, что если мы не копируем всю дирикторию, а хотим скопировать из нее один лишь файл (в моем случае это /home/user/.xsession/), то вероятно, что мы для этого будем использовать функцию --exclude-tag=/home/user/.xsession/, которая пропускает все в и ниже директори, где находится файл, но кроме самого файла.

Так вот, директории выше файла - создаются при распоковке от имени распаковывающего пользователя. Атрибутика дирикторий ведущих к файлу при архивации не учитывается.

Баг? Или я чего-то не понял?

swagcat228
() автор топика
Ответ на: комментарий от swagcat228

Ты не понял. Для сохранения всего пути опускай ключ -C. Тогда у тебя в архиве будет полный путь /home/user/.xsession со всеми правами.

anonymous
()

Обычно я пользуюсь --numeric-owner и при упаковке, и при распаковке.

forest22
()
Ответ на: комментарий от swagcat228

Ты маны вообще читать не хочешь?

$ pwd
/tmp/testdir

$ ll ~/.bashrc 
-rw-r--r-- 1 yorween yorween 3.5K Oct  9 12:49 /home/yorween/.bashrc

$ tar cvf bashrc.tar ~/.bashrc
tar: Removing leading `/' from member names
/home/yorween/.bashrc

$ ll
total 12K
-rw-r--r-- 1 yorween yorween 10K Dec  6 19:49 bashrc.tar

$ tar xvf bashrc.tar 
home/yorween/.bashrc

$ tree -a
.
├── bashrc.tar
└── home
    └── yorween
        └── .bashrc

2 directories, 2 files

Yorween
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.