Einführung in SFTP
SFTP ist die Abkürzung des sicheren Dateiübertragungsprotokolls, eines sicheren Dateiübertragungsprotokolls. Für die Übertragung von Dateien kann eine sichere Netzwerkverschlüsselungsmethode bereitgestellt werden. SFTP hat fast die gleiche Syntax und Funktionen wie FTP. SFTP ist Teil von SSH und eine sichere Möglichkeit, Dateien auf einen Blogger -Server zu übertragen. Tatsächlich ist im SSH -Paket ein Subsystem für sichere Dateiinformationsübertragung namens SFTP (Secure File Transfer Protocol) bereits enthalten. SFTP selbst hat keinen separaten Daemon. Es muss den SSHD -Daemon verwenden (die Portnummer ist standardmäßig 22), um die entsprechenden Verbindungs- und Antwortvorgänge abzuschließen. Daher ist SFTP in gewissem Sinne kein Serverprogramm, sondern eher wie ein Client -Programm. SFTP verwendet auch die Verschlüsselung, um Authentifizierungsinformationen und übertragene Daten zu übertragen, sodass SFTP sehr sicher ist. Da diese Übertragungsmethode jedoch die Verschlüsselung/Entschlüsselungstechnologie verwendet, ist die Übertragungseffizienz viel niedriger als die der gewöhnlichen FTP. Wenn Sie über höhere Netzwerksicherheitsanforderungen verfügen, können Sie SFTP anstelle von FTP verwenden.
Abhängigkeiten hinzufügen
<Depopenty> <gruppe> com.jcraft </Groupid> <artifactId> jsch </artifactId> <version> 0.1.54 </Version> </abhängig>
Konfiguration hinzufügen
SFTP: IP: 192.168.1.60 Port: 22 Timeout: 60000 RetyryTime: 3 Admin: Benutzername: Administrator Passwort: 2K3XRYJBD930.
Codebeispiel
Laden Sie CSV -Dateien jeden Tag um 1 Uhr morgens in mehreren Benutzerverzeichnissen in das lokale TMP -Verzeichnis herunter
@ServicePublic Class sftptask erweitert Thread {private kanelsftp sftp; private Sitzung; @Value ("$ {sftp.admin.username}") privater String -Benutzername; @Value ("$ {sftp.admin.Password}") privates Zeichenfolge Passwort; @Value ("$ {sftp.host}") privater String -Host; @Value ("$ {sftp.port}") privater Integer -Port; privates SftpService sftpService; public etlsftptask (sftpService sftpService) {this.sftpService = sftpService; } / *** eine SFTP -Verbindung herstellen* / private void Connect () {try {jsch jsch = new Jschsch (); Session = jsch.getSession (Benutzername, Host, Port); Session.setPassword (Passwort); Session.setConfig ("StrictthostKeyChecking", "no"); Session.connect (); Channel Channel = Session.openchannel ("SFTP"); Channel.Connect (); SFTP = (Channelsftp) Kanal; } catch (jSchException e) {e.printstacktrace (); }} / *** SFTP -Verbindung schließen* / public void close () {try {if (sftp! = Null) {if (sftp.isconnected ()) sftp.disconnect (); } if (session! }} catch (Ausnahme e) {e.printstacktrace (); }} / ** * Laden Sie die Datei auf lokal herunter * * @param Quell -Quell -Datei * @param Zielzieldatei * @throws sftpexception Exception * @throws filenotFoundException Ausnahme * / privat void download (String -Quelle, String -Ziel) löscht sftpexception, FilenotFoundException {SFTP.Get (Quelle, New FileputStream (NEW) (NEUE Datei (neue Datei)). }/*** Benutzerdatendateien verarbeiten** @param Root Data -Datei Root -Verzeichnis* @param letztes Mal, als die letzte Datei verarbeitet wurde Vektordateien; try {files = sftp.ls (Verzeichnis + "Ereignis _*. CSV"); } catch (Ausnahme e) {e.printstacktrace (); Rückkehr 0; } // Dateiname Zeichenfolge Dateiname; // temporäre Dateizeichenfolge TMPFile; // Dateiaktualisierung Zeit Integer mtime; // Datei Last Update Time Integer mAxtime = letztes Mal; // Benutzerdateien für (Objekt O: Dateien) {try {channelftp.lsentry f = (Channelsftp.lsentry) o; // Dateiaktualisierung Zeit mtime = f.getAttrs (). GetMtime (); if (mtime <= letztes Mal) Weiter; // Dateiname Dateiname = f.getFileName (); // Last Process Event maxime = math.max (Maxtime, Mtime); // Datei herunterladen tmpfile = "/tmp/" + Dateiname; Download (Verzeichnis + Dateiname, TMPFile); } catch (Ausnahme e) {// Todo -Fehlerprotokoll e.printstacktrace (); }} // Die letzte Verarbeitungszeit der Datei return maximal; } / ** * Die Ausführung beginnt jeden Tag um 1 Uhr morgens * / @Scheduled (cron = "0 0 1 * * *") public void task () {// sftp Connection Connect (); String Root; Ganzzahl letztendes; Lange CID; Ganzzahl maxtime = letztes Mal; // Benutzerliste für (sftpdto sftpdto: sftpService.findall ()) {// User Home Directory root = sftpdto.getSftProot (); // Letztes Mal der letzten Dateiverarbeitung lastTime = sftpdto.getLastTime (); Maxtime = math.max (Maxtime, Handle (root, last time)); // Die letzte Verarbeitungszeit aktualisieren if (! Maxtime.equals (letztendlich)) {sftpdto.setLastTime (Maxtime); sftpService.Update (SFTPDTO); }} // SFTP Resource Close () veröffentlichen; }}Zusammenfassen
Das obige ist der Beispielcode für Java, das SFTP verwendet, um Dateien regelmäßig herunterzuladen. Ich hoffe, es wird Ihnen hilfreich sein. Wenn Sie Fragen haben, hinterlassen Sie mir bitte eine Nachricht und der Editor wird Ihnen rechtzeitig antworten. Vielen Dank für Ihre Unterstützung auf der Wulin.com -Website!