Копирование с сохранением прав доступа

Для новичков как вообще в Linux, так и в конкретной теме, к которой относится вопрос.

Модератор: Bizdelnick

pvasya
Сообщения: 4

Копирование с сохранением прав доступа

Сообщение pvasya »

Здравствуйте!

Заранее прошу прощения за написанные глупости, т.к. в shelle я пока не силён, но учусь(именно поэтому сюда и пришёл :)!

Необходимо скопировать дирректорию /home/dir1/ в /home/dir2/

Нашёл параметр -p у команды cp, вроде бы то что надо, но увы скопировать целую дирректорию cp не даёт.

Тогда я решил сделать архив tar, а потом распоковать содержимое в нужную дирректорию.
Архив создал( с опциями cpf, вроде как p - отвечает за сохранение атрибутов). Затем переместил архив во вторую дирректорию и разархивировал(с опциями xvf). Но увы прямо в дирректории назначения(т.е. в /home/dir2/) была создана дирректория home/dir1/, а там уже файлы(т.е. получилось в итоге так: /home/dir2/home/dir1/). Это первая проблема. Как правильно разархивировать? Т.е. прямо в /home/dir2/, а не в /home/dir2/home/dir1/ ?
Вторая проблема: посмотрел содержимое /home/dir2/home/dir1/ - права доступа сброшены :(

Что я делаю не так? Как правильно нужно?

Заранее огромное спасибо!
Спасибо сказали:
Аватара пользователя
nesk
Сообщения: 2268
Статус: Линукссаксовец
ОС: MS Windows XP Home SP3

Re: Копирование с сохранением прав доступа

Сообщение nesk »

man cp
Очень хорошо, что Вы сами нашли ключ -p, но плохо, что не заметили ключ -r
Внимание: У меня под рукой нет машины с Linux. Я не использую эту ОС. Ответы я даю либо по памяти, либо мне помогает гугл. Тщательно читайте маны по тем командам и конфигурационным файлам, которые я упоминаю.

0xDEFEC8ED
Спасибо сказали:
pvasya
Сообщения: 4

Re: Копирование с сохранением прав доступа

Сообщение pvasya »

nesk писал(а):
21.03.2009 20:01
man cp
Очень хорошо, что Вы сами нашли ключ -p, но плохо, что не заметили ключ -r

Намёк понял, ключ нашёл, скопировал, спасибо!

Но всё-таки для общего развития хотел бы узнать, что я не так делал с архивом tar? Заранее огромное спасибо!
Спасибо сказали:
Аватара пользователя
Portnov
Модератор
Сообщения: 1786
Статус: Матёрый линуксоид
ОС: Debian testing/unstable

Re: Копирование с сохранением прав доступа

Сообщение Portnov »

См. в man tar описание опции -p (коротко: её нужно не только при архивировании, но и при разархивировании указывать) и опции -C.
Работа: Ubuntu 9.10
Дом: Debian testing/unstable и на всякий случай winxp в virtualbox.
Для разнообразия: моя домашняя страница -http://iportnov.ru
Спасибо сказали:
Аватара пользователя
ormorph
Сообщения: 3085
ОС: Gentoo

Re: Копирование с сохранением прав доступа

Сообщение ormorph »

ну и еще, если копируеш, либо распаковываеш под обычным пользователем, то как правило по умолчанию, параметры берутся из /etc/bashrc , за это отвечает команда umask, обычно по умолчанию стоит umask 022, тоесть при копировании, обычно скопированный файл автоматом будет с привелегиями пользователя который копировал файл.

root обычно не меняет прав доступа, при копировании.
Спасибо сказали:
Аватара пользователя
nesk
Сообщения: 2268
Статус: Линукссаксовец
ОС: MS Windows XP Home SP3

Re: Копирование с сохранением прав доступа

Сообщение nesk »

ormorph писал(а):
21.03.2009 21:45
root обычно не меняет прав доступа, при копировании.


Мне кажется, тут Вы не правы. У Вас же линукс под рукой, проведите пару экспериментов, проверьте.
Внимание: У меня под рукой нет машины с Linux. Я не использую эту ОС. Ответы я даю либо по памяти, либо мне помогает гугл. Тщательно читайте маны по тем командам и конфигурационным файлам, которые я упоминаю.

0xDEFEC8ED
Спасибо сказали:
Аватара пользователя
ormorph
Сообщения: 3085
ОС: Gentoo

Re: Копирование с сохранением прав доступа

Сообщение ormorph »

обычно копирую:
cp -ax

с таким ключиком , так как у меня достаточно разные FS, все привелегии сохраняются.

Ну и так же, часто приходится менять в ручную привелегии скопированных файлов, даже без этого ключика, если файлы были созданны обычным пользователем, замечаеш что скопированные файлы принадлежат пользователю, плюс каталог поменял привелегии)
При этом копировал под рутом
Спасибо сказали:
Аватара пользователя
ormorph
Сообщения: 3085
ОС: Gentoo

Re: Копирование с сохранением прав доступа

Сообщение ormorph »

Опс немного лохонулся, тогда когда копировал под рутом, пользовал mc, а он делает не очень красиво, сохраняет привелегии пользователя.

Ну и ключик -ax тоже сохраняет привелегии, пользователя тоже)
Спасибо сказали:
pvasya
Сообщения: 4

Re: Копирование с сохранением прав доступа

Сообщение pvasya »

Portnov писал(а):
21.03.2009 20:19
См. в man tar описание опции -p (коротко: её нужно не только при архивировании, но и при разархивировании указывать) и опции -C.

Ага, спасибо, понял.

Вот только не понятно, как сделать так чтобы он не всю струтктуру сохранял, а только оттуда, откуда я указалТ.е. прямо в /home/dir2/, а не в /home/dir2/home/dir1/ ?)?


И ещё вопрос появился(понимаю, что кому-то может показаться глупым, но всё же):
1)Как посмотреть сколько места занимает та или иная дирректория?
2)Как найти самый большой файл, а лучше не один, а все файлы диска выстроить в порядке понижения занимаемого объёма, это реально?
Спасибо сказали:
allez
Сообщения: 2223
Статус: Не очень злой админ :-)
ОС: SuSE, CentOS, FreeBSD, Windows

Re: Копирование с сохранением прав доступа

Сообщение allez »

pvasya писал(а):
22.03.2009 09:41
1)Как посмотреть сколько места занимает та или иная дирректория?
2)Как найти самый большой файл, а лучше не один, а все файлы диска выстроить в порядке понижения занимаемого объёма, это реально?

1. man du.
2. man du, man sort.
Спасибо сказали:
Аватара пользователя
ormorph
Сообщения: 3085
ОС: Gentoo

Re: Копирование с сохранением прав доступа

Сообщение ormorph »

Вот только не понятно, как сделать так чтобы он не всю струтктуру сохранял, а только оттуда, откуда я указалТ.е. прямо в /home/dir2/, а не в /home/dir2/home/dir1/ ?)?


Самое простое пример:

Код: Выделить всё

cd /home/dir1
tar czf /dir1.tar.gz .


точка в конце обязательно должна присутствовать.
в корневой дирктории будет лежать архив.
Вроде я так понял вопрос.
Спасибо сказали:
pvasya
Сообщения: 4

Re: Копирование с сохранением прав доступа

Сообщение pvasya »

allez писал(а):
22.03.2009 09:49
pvasya писал(а):
22.03.2009 09:41
1)Как посмотреть сколько места занимает та или иная дирректория?
2)Как найти самый большой файл, а лучше не один, а все файлы диска выстроить в порядке понижения занимаемого объёма, это реально?

1. man du.
2. man du, man sort.

Спасибо, почитаю.

ormorph писал(а):
22.03.2009 11:16
Вот только не понятно, как сделать так чтобы он не всю струтктуру сохранял, а только оттуда, откуда я указалТ.е. прямо в /home/dir2/, а не в /home/dir2/home/dir1/ ?)?


Самое простое пример:

Код: Выделить всё

cd /home/dir1
tar czf /dir1.tar.gz .


точка в конце обязательно должна присутствовать.
в корневой дирктории будет лежать архив.
Вроде я так понял вопрос.

Архив создаётся. Проблемы именно при распаковке, создаются дирректории с названиями от корня, а дальше в них уже файлы располагаются.
Имеем /home/dir1/ и /home/dir2/
В архив засовываю всё содержимое /home/dir1/

После нужно содержимое архива засунуть в /home/dir2/, а я получаю: /home/dir2/home/dir1/ *(тут содержимое /home/dir1/ )
Спасибо сказали:
Аватара пользователя
ormorph
Сообщения: 3085
ОС: Gentoo

Re: Копирование с сохранением прав доступа

Сообщение ormorph »

Внимательней читай.
Первая команда cd чтобы все было ок, надо находиться в той директории, в которой архивируешь файлы
ну есть еще способ, здесь уже говорилось читай ключик -C точнее не могу, щас с мобилы пишу.
Спасибо сказали:
Аватара пользователя
ormorph
Сообщения: 3085
ОС: Gentoo

Re: Копирование с сохранением прав доступа

Сообщение ormorph »

Чтобы небыло проблем внимательно читайте маны например ключик -t выводит список файлов содержащихся в архиве, без распаковки.
пример использования:

Код: Выделить всё

tar -tzf test.tar.gz


эти пути сохранялись в архиве, потому что вы указывали скорее всего полный путь до папки:

Код: Выделить всё

tar czpf test.tar.gz  /home/dir1

а этого делать не надо, сделайте так как я показал выше в примере.
Или вот еще способ как это правильно проделать:

Код: Выделить всё

tar czpf test.tar.gz -C /home/dir1/ .

точка через пробел тоже обязательно должна присутствовать.
Спасибо сказали: