К основному контенту

🐧 Как сохранить права собственности и права доступа к файлам при копировании файлов или каталогов

На днях я планировал сделать резервную копию некоторых данных из моей настольной системы Ubuntu на внешний USB-накопитель. После того, как я перенес все данные на внешний диск, я заметил, что владелец и права доступа к файлам и каталога у источника и места назначения различны. Но я хотел сохранить существующие атрибуты файла (такие как владелец, группа, отметка времени и т. д.) в обоих местах. После быстрого поиска в Google и просмотра справочных страниц с командой «cp» я обнаружил, что мы можем сохранить права собственности и права доступа к файлам при копировании файлов и каталогов в Linux. Если вы когда-либо были в такой ситуации, вот быстрый способ это реализовать.

Сохранить права собственности и права доступа к файлам при копировании файлов или каталогов в Linux

Команда cp имеет возможность копировать файлы и каталоги, но сохраняет время изменения, время доступа и режимы из исходного файла.
$ cp -rp ~/data /media/sk/sk_seagate/data/

Здесь я копирую содержимое папки с именем «data» на мой внешний диск.

Из справочных страниц команды cp:

-p same as --preserve=mode,ownership,timestamps--preserve[=ATTR_LIST]preserve the specified attributes (default: mode,ownership,timestamps), if possibleadditional attributes: context, links, xattr, all

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

А флаг «-r» используется здесь для рекурсивного копирования каталогов.

Значение — он будет копировать каталоги, его подкаталоги и файлы.
Кроме того, вы можете использовать флаг -a. Команда включает в себя флаг -r и сохраняет все, например ссылки, атрибуты xattr, SELinux и т. д.
$ cp -a ~/data /media/sk/sk_seagate/data/

Из справочных страниц команды cp:

-a, --archivesame as -dR --preserve=all
Чтобы убедиться, что права доступа к файлу и владелец не повреждены, используйте команду getfacl в обоих местах, то есть в источнике и в месте назначения.
$ getfacl ~/data
$ getfacl /media/sk/sk_seagate/data/
Если вы хотите скопировать файлы между локальной системой и удаленной системой в той же сети, вы можете использовать команду «scp» для передачи файлов из одной системы в другую, как показано ниже.
$ scp -rp ~/data senthil@192.168.225.22:/home/senthil/
Приведенная выше команда скопирует папку содержимого с именем «data» из моей локальной системы в удаленную систему.

Здесь 192.168.225.22 — это IP-адрес моей удаленной системы, а «senthil» — это имя пользователя удаленной системы.

Проверьте права доступа к файлам и владение каталогом «data» в обеих системах с помощью команды «getfacl».

Сначала давайте проверим атрибуты файла каталога «data» в локальной системе:

$ getfacl data/
Пример вывода:
# file: data/# owner: sk# group: skuser::rwxgroup::rwxother::r-x

Затем, проверьте, проверьте атрибуты файла каталога «data» на удаленной системе.

Вы можете напрямую войти в удаленную систему и проверить атрибуты файла на удаленного каталога с помощью команды ssh, как показано ниже.

$ ssh senthil@192.168.225.22 getfacl data

Пример вывода:

senthil@192.168.225.22's password:# file: data# owner: senthil# group: senthiluser::rwxgroup::rwxother::r-x

Как вы могли заметить в приведенных выше данных вывода, информация о владельце и группе (то есть senthil) в моей удаленной системе различна.

Потому что флаг -p команды scp не сохраняет все разрешения.

Из справочных страниц команды scp:

-pPreserves modification times, access times, and modes from the original file.

Понятно, что флаг -p сохранит только время модификации, время доступа и режимы из исходного файла, но не владелеца.

В таких случаях вы можете создать общее имя пользователя в обеих системах и попробовать указанную выше команду для предоставления одинаковых прав владения и доступа к файлам в разных системах.

Или просто используйте команду «chown» в системе назначения, чтобы изменить владельца.

Для получения дополнительной информации обратитесь к справочным страницам команд cp и scp.
$ man cp
$ man scp

Комментарии


Дистанционная компьтерная помощь, удаленная компьютерная помощь онлайн.

Популярные сообщения из этого блога

Лучшие плагины для OBS Studio

Open Broadcast Software или OBS - это свободное программное обеспечение с открытым исходным кодом для стриминга аудио и видео данных в сеть интернет. Программа полностью кроссплатформенная и может работать в Windows, Linux или MacOS. Это отличная альтернатива для таких программ, как Wirecast и XSplit. OBS использует для вещания стандартный протокол обмена сообщениями в реальном времени, а поэтому может транслировать данные в любой сервис, поддерживающий это, например, Yotube. Несмотря на широкие возможности OBS, программа поддерживает еще и множество плагинов. В этой статье мы рассмотрим лучшие плагины для OBS Studio, которые вы можете использовать. Содержание статьи: Лучшие плагины OBS Studio 1. Browser Source Plugin 2. Video Source Plugin 3. Simple Scene Switcher 4. DirectShow Audio Source 5. CLR Browser Source 6. OBS Remote 7. AMD Advanced Media Framework Encoder 8. Text Source Plugin Выводы Лучшие плагины OBS Studio Чтобы найти плагины OBS Studio для Video пользователям пр…

Лучшие аналоги Paint для Linux

Когда я работал в Windows, я часто использовал стандартную программу редактора изображений Windows - Paint. Не всегда нужен очень и многофункциональный инструмент вроде Photoshop или Gimp. Иногда, чтобы подправить ту или иную картинку, дорисовать на ней несколько фигур или вставить текст достаточно простого, легкого в освоении графического редактора вроде Paint. В Linux таких программ довольно много. В этой инструкции мы рассмотрим лучшие аналоги Paint для Linux. В этот список не будут включены такие программы, как Gimp и Krita, ведь это полнофункциональные графические редакторы, векторные редакторы, такие как Inkscape мы тоже рассматривать не будем. А теперь перейдем к списку. Содержание статьи: KolourPaint MyPaint Gnome Paint XPaint Pinta mtPaint GPaint Rassam-paint Выводы KolourPaint На первом месте в списке аналогов Piant для Linux будет KoloutPaint. Это стандартный графический редактор для окружения рабочего стола KDE. Он поддерживает множество форматов изображений PNG, J…

Подключение OneDrive в Linux

OneDrive (Ранее известный как SkyDrive) это популярное облачное хранилище файлов от Майкрософт. Сейчас OneDrive бесплатно предоставляет 7 гигабайт пространства новым пользователям. Как вы знаете OneDrive хорошо интегрирован с другими продуктами компании  Microsoft. В OneDrive Также есть официальный клиент который автоматически загружает ваши видео и фотографии с камеры в облако. Но к сожалению этот клиент недоступен для операционных систем семейства Linux. Но не все так плохо. Сообщество открытого программного обеспечения уже нашло решение. Это opedrive-d от Boilermaker. Запустившись как демон программа автоматически синхронизирует локальную папку с облаком OneDrive. Содержание статьи: Установка Onedrive-d в Linux Настройка Синхронизация локальной папки с OneDrive Установка Onedrive-d в Linux Несмотря на то что onedrive-d разрабатывается для Ubuntu/Debian, CentOs/Fedora/RHEL поддерживается тоже хорошо. Для установки достаточно набрать несколько команд: $ git clone https://gith…