У меня есть клиент, использующий самые нелепые имена файлов / папок, и мне нужно RSYNC свои данные на NAS.Моя логика RSYNC написана на Perl, и quotemeta () работала хорошо, пока нам не пришлось иметь дело с датскими символами.
См. Пример кода:
#!/usr/bin/env perl
$my_string_a = "/data/stuff/folder K/ \snappy/SLE.T.TET/Div (erse)/SLETTET/Disk klæbere";
$my_string_b = quotemeta($my_string_a);
print "\n".$my_string_a."\n".$my_string_b."\n";
exit;
Выводы:
/data/stuff/folder K/ snappy/SLE.T.TET/Div (erse)/SLETTET/Disk klæbere
\/data\/stuff\/folder\ K\/\ snappy\/SLE\.T\.TET\/Div\ \(erse\)\/SLETTET\/Disk\ kl\�\�bere
Примечание: я должен использовать escape-символы, так как ssh / rsync требует "двойного экранирования" в Perl.
Есть ли лучшее консервативное решение или мне нужно будет пересмотреть мой путь через это?