如何获取带有循环符号链接的目录 tarball?

如何获取带有循环符号链接的目录 tarball?

我以 root 身份通过以下命令创建备份(TODO 对吗?因为 roaima 观察到这可能会导致复杂化)在目录树中创建备份,该目录树在某些目录中具有循环符号链接;那些目录,tar跳过。图1输出的命令1

root@masi:/home/masi# tar czf /media/masi/ext4Masi/backup_home_20.12.2016.tar.gz $HOME/

系统特点

  • $HOME/Documents/

    masi@masi:~$ ls -ld /home/masi/Documents/
    drwxr-xr-x 36 masi masi 4096 Nov 23 22:02 /home/masi/Documents/
    
  • $HOME

    masi@masi:~$ echo $HOME
    /home/masi
    

图 1 命令 (1) 的输出 AND 命令 (2) 的输出(相同输出),图 2 主树

在此输入图像描述 在此输入图像描述

tarball 的特征

  • 来自命令 1 的压缩包;命令2的情况相同。它表示Documents备份中没有目录。

    root@masi:/home/masi/Documents/bin# tar tzvf /media/masi/masiWeek/backup_home_22.12.2016.tar.gz | grep 'Documents/*$' 
    root@masi:/home/masi/Documents/bin# 
    

如果循环符号链接到目录,tar则跳过该目录,在我的例子中,Documents.其他目录,Downloads然后再次备份。我想避免这种行为。您可以采取--deference解决方法,但主要缺点是重复数据,即遵循我也想在备份中维护的符号链接。

命令2,但是失败,输出也是图1

# DopeGhoti
root@masi:/home/masi/Documents/bin# nice tar czf \
    /media/masi/masiWeek/backup_home_22.12.2016.tar.gz \
    --keep-directory-symlink $HOME/

命令3,但是失败,输出也与图1相同

root@masi:/home/masi# nice tar --keep-directory-symlink -czf \ 
  /media/masi/masiWeek/backup_home_22.12.2016.tar.gz $HOME/ 

操作系统:Debian 8.5
相关:在线程中恢复这样的备份如何将主备份恢复到几乎全新的 Debian?

答案1

在评论中,您确认您正在以用户身份root而不是您自己的身份运行备份。当你成为root用户时,你的价值$HOME也会发生变化。 (这受到你成为的方式的影响root。)

因此,当您运行时,tar cvf /tmp/backup.tar $HOME您会$HOME获得root.你的问题中非常令人困惑的是什么(以及链接一) 是你一直在交换$HOME/home/masi

要备份,/home/masi您应该使用类似的东西tar cvf /tmp/backup.tar /home/masi。或者改变您成为用户的方式root,这样$HOME就不会改变。

当您备份正确的目录树时,我怀疑您会找到丢失的Documents文件夹。

相关内容