GNU/Linux >> LINUX-Kenntnisse >  >> Linux

Wie ändere ich die Kodierung, die mein SFTP-Server verwendet?

Vorbemerkungen:

  • sftp muss Verwenden Sie UTF-8 als Dateinamencodierung (siehe zum Beispiel hier als Referenz). Es gibt jedoch Clients und Server, die diese Anforderung nicht erfüllen und gegen die Spezifikationen verstoßen, was möglicherweise die Ursache Ihres Problems ist.

  • Sie schrieben:"Beachten Sie, dass ich Folgendes auskommentiert habe:AcceptEnv LANG LC_*. Gemäß hier bedeutet dies, dass der Server dem Client nicht erlaubt, lokale Umgebungsvariablen zu übergeben."

    Es kann ein Missverständnis darüber geben, wie dies funktioniert und wofür es gut ist. Wenn zwei Maschinen kommunizieren, müssen sie dieselben Datenformate verwenden. Angenommen, VisualCron fügt Dateinamen, die als ISO 8859-1 codiert sind, in den Bytestrom ein, den es an den Ubuntu-Server sendet, aber Sie zwingen den Ubuntu-Server, den eingehenden (Dateinamen) Bytestrom so zu interpretieren, als ob er in UTF-codiert wäre. 8. Das wird nicht gelöst Probleme, sondern Ursache sie.

Nachdem dies gesagt wurde:

Ich würde zunächst versuchen herauszufinden, wo genau das Problem auftritt. Ich gehe stark davon aus, dass Sie SSH-Zugriff oder sogar physischen Zugriff (Tastatur) auf den Ubuntu-Server haben. Dann

  • Überprüfen Sie, ob das Gebietsschema en_US.UTF-8 überhaupt auf dem Ubuntu-Server installiert ist. Bitte beachten Sie, dass nur die LC_ gesetzt wird und LANG Umgebungsvariablen nicht ein Gebietsschema installieren.

    Stattdessen würden Sie während der Installation des Betriebssystems oder durch etwas wie dpkg-reconfigure locales ein Gebietsschema installieren (auf debian - ich kenne Ubuntu nicht).

  • Wenn Sie SSH verwenden, stellen Sie sicher, dass Ihre SSH-Terminalsoftware (z. B. Putty) dieselbe Codierung wie der Server verwendet.

  • Dann der wichtigste Schritt:Verwenden Sie Ihr SSH-Terminal manuell Erstellen Sie im entsprechenden Verzeichnis eine Datei mit problematischem Namen, damit der sftp-Client auf Ihrem Windows-Laptop sie sehen kann.

    Um auf Ihre Frage zurückzukommen, könnten Sie beispielsweise eine Datei mit dem Namen Liège.txt erstellen in Ihrem /tickets Verzeichnis (touch /tickets/Liège.txt ). Überprüfen Sie erneut mit Ihrem SSH-Terminal sorgfältig, ob der Dateiname korrekt angezeigt wird, wenn Sie Ubuntu die Dateien in diesem Verzeichnis auflisten lassen (ls -al /tickets ).

  • Verwenden Sie nun den sftp-Client auf Ihrem Windows-Laptop und prüfen Sie, ob er die neu erstellte Datei korrekt herunterlädt.

    Wenn dies funktioniert, bedeutet dies, dass Ihr Problem auftritt, wenn VisualCron die Dateien auf den Ubuntu-Server überträgt. Wenn es nicht funktioniert, liegt das Problem zwischen Ihrem Windows-Laptop und dem Ubuntu-Server.

In beiden Fällen gibt es Tools, die Ihnen helfen können, die Situation zu analysieren.

Sie können zum Beispiel einen Einblick gewinnen, indem Sie mit convmv herumspielen, das Dateinamen von einer Kodierung in eine andere umwandeln kann. Insbesondere könnten Sie die Codierung Ihrer Dateinamen von UTF-8 in UTF-8 umwandeln . Wenn Sie das tun und sicher sind, dass der Dateiname bereits in UTF-8 codiert ist, darf er sich während dieser Konvertierung nicht ändern.

Vielleicht möchten Sie auch einen Blick auf chardet werfen, eine Python-Bibliothek, die versucht, die Codierung von z. Dateinamen. Ich bin kein Python-Typ, daher kann ich Ihnen mit dem Quellcode nicht helfen. Gemäß der akzeptierten Antwort auf diese Frage hätten Sie eine Zeile wie chardet.detect(os.popen("ls yourfilename.txt").read()) in Ihrem Python-Skript, das die wahrscheinlichste Codierung zusammen mit einer Vertrauensbewertung ausgibt.

Zusammenfassend:

  • Stellen Sie sicher, dass die Dateinamen auf Ihrem Ubuntu-Server wirklich in UTF-8 codiert sind, indem Sie die oben gezeigten Schritte befolgen und die oben genannten Tools verwenden.

  • Wenn Sie absolut sicher sind, dass die Dateinamen auf Ihrem Ubuntu-Server in UTF-8 kodiert sind, überprüfen Sie, ob Ihr sftp-Client auf Ihrem Laptop sie herunterladen kann. Wenn nicht, versuchen Sie es mit anderen Clients, bis es funktioniert.

  • Sollten Sie feststellen, dass nicht alle Dateinamen auf dem Ubuntu-Server in UTF-8 kodiert sind, passen Sie die Einstellungen in VisualCron entsprechend an. Ich kenne VisualCron nicht und kann Ihnen daher nicht helfen.


Linux
  1. So verbinden Sie sich mit SFTP mit FileZilla für eine sichere Dateiübertragung

  2. Ändern Sie die Kernel-Version auf einem Linux-Cloud-Server mithilfe des Rettungsmodus

  3. Wie ändere ich das Stammverzeichnis eines Apache-Servers?

  4. So ändern Sie die Konfiguration von u-boot in Yocto

  5. Wie ändere ich eine Datei direkt mit awk? (wie bei sed -i)

Wie lade ich eine Datei mit dem cPanel-Dateimanager hoch?

Wie ändere ich das Root-Passwort mit WHM?

Wie ändere ich den Hostnamen eines cPanel/WHM-Servers?

So ändern Sie Dateiberechtigungen mit FileZilla

So ändern Sie den Server-Hostnamen in Ubuntu

Wie ändere ich die Zeitzone auf Ubuntu 18.04 Server?