为什么可以创建带有奇怪字符的文件名但无法通过 CIFS 访问?

为什么可以创建带有奇怪字符的文件名但无法通过 CIFS 访问?

我有一个包含一些旧文件的文件系统,这些文件可能在文件名中使用了一些 Windows 编码(而不是 UTF8)。当我尝试通过 CIFS 挂载的文件系统将它们备份到 Samba 共享(Hetzner Storage Box)时,文件已创建,但无法以任何方式访问。删除它们的唯一方法是通过其他方式(例如 SFTP 访问共享)。我正在使用 rdiff-backup,但使用 rsync 或普通 cp 也会发生同样的情况。

原始文件:

-rwxr-xr-x 1 www-data www-data 2082 May 21  2010 ./domain/old/images/images2010/news/53x53_A?istýjrancejevonku.jpg

samba共享上的文件:

ls: '53x53_A?istýjrancejevonku.jpg': No such file or directory
total 48
-rwxr--r--  1 root root 2082 Nov 20 23:49 53x53_A?istýjrancejevonku.jpg

该共享安装了 unix/posix 扩展,但在 Debian 11 中需要 vers=1.0 选项,否则它会说 unix 扩展无法通过 SMB 3.1.1 在服务器上使用。

grep cifs /proc/mounts
//xxx.your-storagebox.de/backup /backups/xxx cifs rw,relatime,vers=1.0,cache=strict,username=xxx,uid=0,forceuid,gid=0,forcegid,addr=2a01:xxxx,soft,unix,posixpaths,serverino,mapposix,acl,noperm,rsize=1048576,wsize=65536,bsize=1048576,echo_interval=60,actimeo=1 0 0

复制到此共享时,带有 utf8 字符的文件名可以正常工作,只有带有非 utf8 字符的文件才会出现问题。是否有任何挂载选项可以让我复制/备份这些文件?或者 rdiff-backup 选项可以解决这个问题(我猜不是,因为复制操作本身成功了)?

答案1

(1)解决方法:

您可以尝试这个:

cd ./domain/old/images/images2010/news/
mv 53x53_*ancejevonku.jpg normal_name.jpg

继续您的工作流程。
必要时,您可以将其重命名为与原始名称类似的名称。

(2)解决方案:

我不太清楚您的问题是什么或您想要实现什么。
根据我对您的情况的解释,此解决方案将起作用:
在原始目录中,备份的顶层,您可以创建整个目录的 zip(或 tar)文件。
然后将此 zip(或 tar)文件备份到您的 cifs 卷。奇怪的文件名将被隐藏在该容器内,因此工作流程不会遇到当前问题。
必要时,您可以解压缩到原始目录,在该目录中可以看到奇怪的文件名,但那里的工作流程没有访问问题。

相关内容