前几天我计划将一些数据从我的 Ubuntu 桌面系统备份到外部 USB 驱动器。 将所有数据传输到外部驱动器后,我注意到源和目标上的文件和目录的所有者和权限不同。 但是,我想在两个位置保持现有文件属性(如所有者、组和时间戳等)的完整性。 在快速谷歌搜索并浏览“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 possible additional attributes: context, links, xattr, all
所以,如果你使用 -p 标志,它将保留原始文件中的所有现有文件属性,例如模式、所有权和时间戳。
和 “-r” 此处使用标志以递归方式复制目录。 含义 – 它将复制目录及其子目录和文件。
或者,您可以使用 -一个 旗帜。 它包含 -r 标志并保留所有内容,例如链接、xattr、SELinux 属性等。
$ cp -a ~/data /media/sk/sk_seagate/data/
从 cp 命令的手册页:
-a, --archive same as -dR --preserve=all
要验证文件权限和所有权是否完整,请使用 getfacl 两个位置(即源和目标)上的命令。
$ getfacl ~/data
$ getfacl /media/sk/sk_seagate/data/
如果要将文件从本地系统复制到同一网络中的远程系统,可以使用 “SCP” 命令将文件从一个系统传输到另一个系统,如下所示。
$ scp -rp ~/data [email protected]:/home/senthil/
上面的命令会将名为“data”的内容文件夹从我的本地系统复制到远程系统。 这里,192168.225.22 是我的远程系统的 IP 地址,“senthil”是远程系统的用户名。
使用“getfacl”命令检查两个系统上“data”目录的文件权限和所有权。
首先让我们检查本地系统上“data”目录的文件属性:
$ getfacl data/
样本输出:
# file: data/ # owner: sk # group: sk user::rwx group::rwx other::r-x
接下来,检查远程系统上“data”目录的文件属性。 您可以直接登录远程系统,并通过 ssh 命令查看远程目录的 fie 属性,如下所示。
$ ssh [email protected] getfacl data
样本输出:
[email protected]'s password: # file: data # owner: senthil # group: senthil user::rwx group::rwx other::r-x
正如您在上面的输出中可能注意到的那样,我的远程系统中的所有者和组信息(即 senthil)是不同的。 因为, -p scp 命令的标志不会保留所有权限。
从 scp 命令的手册页:
-p Preserves modification times, access times, and modes from the original file.
很明显, -p flag 只会保留原始文件的修改时间、访问时间和模式,但 不是所有权. 在这种情况下,您可以在两个系统上创建一个共同的用户名,并尝试上述命令在不同的系统上携带相同的所有权和文件权限。 或者只是在目标系统上使用“chown”命令来更改所有权。
有关详细信息,请参阅 cp 和 scp 命令的手册页。
$ man cp
$ man scp
建议阅读:
- 如何复制文件并同时更改所有权、权限
希望这可以帮助。
感谢您的光临!
帮助我们帮助您:
- 订阅我们的电子邮件通讯: 立即注册
- 支持 OSTechNix: 通过贝宝捐款
- 下载免费的电子书和视频: TradePub 上的 OSTechNix
- 联系我们: 红迪网 | Facebook | 推特 | 领英 | RSS订阅
祝你有美好的一天!!
文件属性文件权限LinuxLinux命令所有权