rsync 使用 ecryptfs 时出现“文件名太长”错误

rsync 使用 ecryptfs 时出现“文件名太长”错误

我正在尝试rsync制作文件系统的存档副本。大多数文件都已成功复制。但是,有些文件无法复制,并出现以下错误:

rsync: recv_generator: failed to stat "/offsite/secure/backup/equality/image/home/.ecryptfs/richw/.Private/ECRYPTFS_FNEK_ENCRYPTED.FWZCrxWC57ny9UTn1cFNZL5w.27.bkB806NyASyVhlkjDSj8409CPYuh4U--/ECRYPTFS_FNEK_ENCRYPTED.FWZCrxWC57ny9UTn1cFNZL5w.27.bkB806NyN3crxC.r7IEshHGdDkRwJU--/ECRYPTFS_FNEK_ENCRYPTED.FZZCrxWC57ny9UTn1cFNZL5w.27.bkB806NyAT1fljq1oLjEFLY7WuGBIKEQb0Lw-70GL..7i70mP89OnSy2Lg88XZ-s5bs2ugEt16Xwqzd.SS1Gn-sditaJ6k--": File name too long (36)

我能做些什么来解决这个问题?

源计算机运行的是 Ubuntu 16.04.4 LTS(GNU/Linux 4.4.0-122-generic x86_64),带有 ZFS 源文件系统。

目标计算机运行的是 Ubuntu 18.04 LTS(GNU/Linux 4.15.0-23-generic x86_64),并且在 ext4 之上有一个 ecryptfs 文件系统。

答案1

如上所述在 Unix StackExchange 上,ext4 系统中的最大文件名长度为 255 个字符。由于您已使用目标 eCryptfs 文件系统启用了加密文件名,并且 eCryptfs 只是 ext4 文件系统上的分层文件系统,因此所有文件名路径元素(加密后)都必须少于 255 个字符。同样,任何加密文件名的完整路径都必须少于 4096 个字符。

似乎至少有一个源文件的路径和/或名称违反了此限制。

我想到了一些可以让 rsync 完成其工作的选项:

  1. 查找源文件系统中路径元素长度超过 143 个字符(或路径总长度可能超过两三千个字符)的所有文件,并将它们重命名为少于 143 个字符的文件。(由于加密文件名填充,143 个字符是从之前引用的 Unix StackExchange 帖子中提取的)。这可能可行,也可能不可行,具体取决于是否可以重命名相关文件,同时保留系统所需的功能。
  2. 关闭 eCryptfs 系统上的文件名加密。当然,您将失去文件名的匿名性,但这对您来说可能是可以接受的。

相关内容