cp -b (--backup) 到底做了什么?

cp -b (--backup) 到底做了什么?

在你用明显的方式打我之前,我知道,备份选项可以备份文件。

但问题是,该cp命令通常会备份文件。有人可能会说文件的副本就是备份。

更准确地说,我的问题是:该-b选项执行了哪些cp命令尚未执行的操作?

cp(1) 手册页给出了该--backup选项的以下描述:

备份每个现有的目标文件

这个定义不是很有用,基本上是说“备份选项进行备份”。这没有说明-b增加了什么cp

我知道-b在新文件名的末尾添加一些后缀。但它还有其他作用吗?或者就是这样?-b备份只是cp在文件名末尾添加一些内容的命令吗?谢谢

PS 您-b在日常工作中进行备份时通常会使用吗?还是你只是坚持-a

答案1

它为已存在的每个目标文件创建备份副本。那些否则会被覆盖和丢失的内容。

$ mkdir foo; cd foo
$ echo hello > hello.txt
$ echo world > world.txt
$ cp -b hello.txt world.txt
$ ls
hello.txt  world.txt~  world.txt
$ cat world.txt
hello
$ cat world.txt~
world

world.txt~就是它创建的备份文件。如果仔细观察,您会发现备份文件实际上是原始文件,只是重命名了。 (即索引节点号保持不变,该文件的权限也保持不变。)

答案2

来自相同的 (GNU coreutils) cp 联机帮助页:

       --backup[=CONTROL]
              make a backup of each existing destination file

CONTROL因此,很自然地,我们在该文档中查找 的定义:

       The backup suffix is '~', unless set with --suffix or SIMPLE_BACKUP_SUFFIX.  The version control method may be selected via the --backup option or through the VERSION_CONTROL environment variable.  Here are the values:

       none, off
              never make backups (even if --backup is given)

       numbered, t
              make numbered backups

       existing, nil
              numbered if numbered backups exist, simple otherwise

       simple, never
              always make simple backups

但它还有其他作用吗?

不。

PS 您在日常工作中进行备份时通常会使用 -b 吗?或者你只是坚持-a?

嗯。-b听起来对于实际备份数据来说是一个糟糕的解决方案。更多的是为了避免在非备份情况下损坏数据。所以,不,我已经绝不用过的-b

对于备份,它实际上取决于上下文,但对于私有/小型文件系统的东西,文件系统快照(通过 ZFS 或通过使用下面的瘦 LVM)工作得非常好。对于设备外备份,老实说主要是rsync为了完整备份。对于需要磁盘外增量备份的情况来说,duplicity这是可以的。

相关内容