rsync-它在传输过程中会创建临时文件吗?

rsync-它在传输过程中会创建临时文件吗?

据我所知,rsync 在完成之前不会在目标目录中创建文件。

这一定意味着它在某个临时目录中创建文件,并在完成后将文件复制到目标目录中。

首先,这是正确的吗?

如果为真,那么 rsync 是否可以设置不使用临时目录,而是在目标目录中创建文件并继续写入直到完成?

答案1

是的,它确实创建了一个临时文件。

根据手册页您可以使用参数 -T 指定存储临时文件的目录,如下所示

-T, --temp-dir=DIR 在目录 DIR 中创建临时文件

您的问题第二部分的答案也可以在那里找到:

- 到位

当文件数据需要更新时,此选项会更改 rsync 传输文件的方式:rsync 不会采用默认方法,即创建文件的新副本并在完成后将其移动到位,而是将更新的数据直接写入目标文件。

答案2

它确实会创建一个临时文件,默认情况下位于目标目录中,名为.<FILE_NAME>.<RANDOM_STRING>。因此,如果您正在复制foo.txt,它将创建一个名为 的临时文件.foo.txt.GV4H3GV4H3是每次运行时都会不同的随机字符串)。您可以使用以下选项控制此行为rsync

   --partial
          By default, rsync will delete any partially transferred
          file if the transfer is interrupted.  In  some  circum‐
          stances  it  is more desirable to keep partially trans‐
          ferred files. Using the --partial option tells rsync to
          keep  the  partial  file which should make a subsequent
          transfer of the rest of the file much faster.

   --partial-dir=DIR
          A better way to keep partial files than  the  --partial
          option  is  to  specify a DIR that will be used to hold
          the partial data (instead of writing it out to the des‐
          tination file).  On the next transfer, rsync will use a
          file found in this dir as data to speed up the  resump‐
          tion  of  the  transfer and then delete it after it has
          served its purpose.

请阅读手册页的相关部分rsync(以下只是有关如何使用的大部分内容的一小部分--partial-dir)。

答案3

rsync 在目标目录中创建临时文件。该文件的名称与源文件相同,但带有扩展名。它可能如下所示:

source: foo.bar 
target temp: foo.bar.hzmkjt7 (hzmkjt7 is just an example) 

在文件被确认为源文件的精确副本后,扩展名将被删除。在重命名过程中,所有权、权限和修改时间将被设置。因此,由于权限问题,您可能看不到该文件。确保您有足够的权限查看所有文件以及不属于您的文件,以便查看临时文件。

相关内容