我有一台 Linux 服务器(Ubuntu 16.04),我想在其中安装一个外部“存储盒”,定期备份几 TB 的服务器数据(高频和低频变化),可能会跟踪用户的属性(所有者/组) /权限)。
这些存储盒的提供商提供以下协议:FTP、FTPS、SFTP、SCP、Samba/CIFS、HTTPS、WebDAV
我应该考虑哪种备份工具?如果您建议 rsync,因为我首先要在本地挂载数据,那么我应该选择哪种协议来挂载?是否可以备份用户的属性(即在服务器和主机之间映射用户)?
答案1
这实际上取决于网络的具体情况以及存储设备的设计方式。
如果您绝对必须将存储目录挂载为文件系统,那么您显然会陷入使用 SMB/CIFS 或 SSHFS(只需要存储设备上有效的 SFTP 支持)的困境。在这两者中,除了批量传输之外,SMB 几乎总是能够获得更好的性能(对于批量传输,任何一个都可能胜出)。如果您可以获得有效的 NFSv4 支持(如果是 Ubuntu 机器,您绝对应该能够获得,无论 OEM 怎么说),通常在大多数情况下都会优于 SMB/CIFS 和 SSHFS。
如果您只是想通过网络传输数据,那么老实说您的选择也好不了多少。在您的情况下,我可能会使用 SFTP 和 SCP,因为常规 FTP(以及 FTPS,即基于 SSL 的 FTP)很糟糕,而 WebDAV(无论是通过 HTTP 还是 HTTPS)并不是为批量存储场景而设计的(DAV 代表分布式创作和版本控制,它很好地描述了这样一个事实:它被设计为 FTP 的替代方案,用于将内容推送到 Web 服务器)。在理想的情况下,我要么使用 rsync (如果我有很多文件要传输),要么可能只使用 netcat (如果我只需要复制一个文件)大的文件)。
答案2
我建议使用口是心非(但我没有在几 TB 的规模上测试它),它有很多后端,并且增量备份会分成块(默认为 25 MB),并且只需要下载块,这些块实际上是恢复所需的。我建议将它与 scp/sftp 一起使用,因为它可以正常工作。
如果您需要以网络传输文件的速度进行备份,那么这些协议都不是理想的选择。但对于一次大备份,然后每天(甚至每小时)增量备份只有几 GB 的口是心非应该可以正常工作。
答案3
不要做任何破坏实现和语义之间同构的事情。
从客户端操作系统的角度来看,文件的所有权在语义上是元数据。
当文件上传到备份服务器时,文件的客户端所有权不是元数据从服务器操作系统的角度来看。文件的服务器上元数据应该是文件在服务器操作系统上的所有权。
所以,在服务器上,需要另外一个独立的数据结构来记录服务器文件在客户端原始图像的元数据。例如,数据库。
从备份服务器的角度来看,该服务器文件系统上的文件被视为常规文件,即使该文件的内容具有以下含义:客户端文件的镜像,因为服务器操作系统永远无法理解文件的内容。
其实,在文件的所有属性中,只有“最后修改时间戳”在文件上传到服务器后仍然可以被视为元数据,因为该属性代表了文件内容的版本。