Elfeledett hősök VI. : NcFTP

Segítséget kaptál? Szívesen töltöd itt az idődet? Visszajársz hozzánk? Támogasd a munkákat: Ko-fi és Paypal!

Tudom-tudom, elavult, nem biztonságos, a ZSXYT generáció már azt sem tudja mi az...! Szóval az itthoni biztonsági mentés (mindenről is) úgy néz ki, hogy egy kuka mellől mentett Fujitsu Primergy szerverecskén futkozik egy OpenMediaVault, azon meg ugyi egy ProFTPD, és oda mennek a mentések. Szóval kell egy jó kis FTP kliens, ő pedig a mai napunk tárgya, az NcFTP.

Az NcFTP egy FTP kliensprogram a hagyományos `ftp` kivátására, hogy kényelmesebb, rugalmasabb használatot biztosítson: pl. megszakadt letöltések folytatása, háttérfeladatok kezelése, könyvjelzők kezelése, proxy/tűzfal használat, stb..

Az NcFTP-t el lehet indítani úgy, hogy már parancssori opciókkal megadsz egy FTP címet, pl. ncftp ftp://szerver/könyvtár/

Használhatsz opciókat is:

 -u XX – felhasználónév (username) megadása.
 -p XX – jelszó (password) megadása.
 -P XX – port szám (alapértelmezett 21) megváltoztatása.

Miután elindult az NcFTP, egy interaktív parancssort kapsz, ahol FTP parancsokat adhatsz meg: open, ls, cd, get, put, stb. ( ncftp> ).

Alap parancsok:

  open [szerver] - Kapcsolódás FTP szerverhez. Megadhatsz felhasználót/jelszót/portot. Pl. open -u felhasználó -p jelszó -P port
  ls, dir - Könyvtár tartalmának kilistázása. ls rövidebb, dir részletesebb.
  cd [könyvtár] - Váltás a távoli szerveren könyvtárak között (lehet abszolút vagy relatív útvonal).
  get [fájl] - Fájl letöltése a távoli szerverről. -z opcióval átnevezés, pl. get -z távoli_név helyi_név; -R rekurzívan, könyvtárak letöltése teljes tartalommal; -f kikapcsolhatod a resume-t (gyk. kényszerített letöltés újra); -A folytatja fájl "végén"; -DD törli a távoli fájlt letöltés után.
  put [fájl] - Fájl feltöltése a távoli szerverre. Szintén a fenti opciók használhatók.
  quit, exit, bye - Kijelentkezés és kilépés az NcFTP-ből.

Ahogy az megszokott, a helyi gépünkre a l(ocal) jelzővel hivatkozunk, pl. lls, a helyi könyvtár listázása.

NcFTP támogatja, hogy háttérben futtass letöltéseket/feltöltéseket: bgget, bgput, get/put elindítása háttérben, a kiadásuk után tovább ténykedhetsz a parancssorban. 
A háttérfeladatok naplója a $HOME/.ncftp/spool/log fájlban van, a jobs parancs kilistázza az aktuálisan futókat.

Könyvjelzőt a bookmark név paranccsal hozhatsz létre, a meglévők a bookmarks paranccsal kezelhetők.

Az NcFTP-nek rengeteg konfigurálható beállítása van, amit a set paranccsal tudsz megváltoztatni, és a show paranccsal lekérdezni. Ezeket a $HOME/.ncftp/prefs fájlban tárolja. 

Néhány fontos beállítás:

  anon-password - Jelszó, ha anonymous bejelentkezés történik. Általában az e-mailedet használja.
  auto-ascii - Kiterjesztések listája, amiket ASCII módban továbbít, míg másokat binary módban. Hasznos pl. `.txt`, `.html` fájloknál sorvége-helyes kezelést adjon.
  auto-resume - Ha letölt egy részben már meglévő fájlt (pl. megszakadt kapcsolat miatt), automatikusan folytassa-e (resume).
  passive - Adatkapcsolat létrehozásának módja: legyen-e passzív (PASV) vagy hagyományos (PORT) mód. Sok tűzfal, NAT csak passzív módot enged.
  progress-meter - A fájlátviteli státusz kijelzése.                                                                     
  logsize - A naplófájl maximális mérete (kilobájtban).

A $HOME/.ncftp/firewall konfigurációs fájlban meg tudod adni a proxy/tűzfal adatait: host, port, felhasználó/jelszó, típus, gyk. a bejelentkezési metódust írja le, milyen adatokat, milyen sorrendben küldjön. 

NcFTP több konfigurációs fájlt használ:

  ~/.ncftp/bookmarks – könyvjelzők.
  ~/.ncftp/firewall – tűzfal / proxy beállítások.
  ~/.ncftp/prefs – beállítások.
  ~/.ncftp/trace – hibakeresési napló.
  ~/.ncftp/spool/ – háttérfeladatokat tárolja.

A mentések terén nálam a legfontosabb a konfigurációs állományaim (pontfájlok) mentése, amiket egy külön könyvtárban gyűjtögetek. A mentésükhöz egy szkriptecskét használok, aminek természetesen az alapköve az NcFTP (a változókat értelemszerűen töltsd fel, teljes elérési útvonalakkal):

#!/bin/bash

# ========================
# Berus NcFTP Szkript
# ========================

# --- Konfiguráció ---
FTP_HOST=" "    # A távoli FTP szerver címe
FTP_USER=" "    # FTP felhasználónév
FTP_PASS=" "    # FTP jelszó
FTP_DIR=" "     # A távoli könyvtár, ahova mentünk (léteznie kell!)

LOCAL_DIR=" "   # A helyi könyvtár, amit menteni szeretnénk
BACKUP_NAME="dots_$(date +%Y%m%d_%H%M%S).tar.gz"  # A mentés fájlneve (időbélyeggel)

LOG_FILE=" "    # Naplófájl helye, neve

# --- Függvények ---
log() {
    echo "$(date '+%Y-%m-%d %H:%M:%S') - $1" | tee -a "$LOG_FILE"
}

# --- Főprogram ---
log "INFO: Mentési folyamat elindítva."

# Ellenőrizzük, hogy létezik-e a helyi könyvtár
if [ ! -d "$LOCAL_DIR" ]; then
    log "HIBA: A helyi könyvtár nem létezik: $LOCAL_DIR"
    exit 1
fi

# Archívum létrehozása (tömörítve)
log "INFO: Archívum létrehozása: $BACKUP_NAME"
tar -czf "/tmp/$BACKUP_NAME" -C "$LOCAL_DIR" .

if [ $? -ne 0 ]; then
    log "HIBA: Az archívum létrehozása sikertelen."
    rm -f "/tmp/$BACKUP_NAME" 2>/dev/null
    exit 1
fi

# Feltöltés az FTP szerverre
log "INFO: Feltöltés az FTP szerverre: $FTP_HOST"
ncftpput -u "$FTP_USER" -p "$FTP_PASS" -P 21 "$FTP_HOST" "$FTP_DIR" "/tmp/$BACKUP_NAME"

# Ellenőrizzük a feltöltés eredményét
if [ $? -eq 0 ]; then
    log "RENDBEN: A biztonsági mentés sikeresen feltöltve: $BACKUP_NAME"
    # Sikeres feltöltés után töröljük a helyi ideiglenes fájlt
    rm -f "/tmp/$BACKUP_NAME"
else
    log "HIBA: A feltöltés sikertelen az FTP szerverre."
    exit 1
fi

log "INFO: Mentési folyamat befejezve."
exit 0

Az NcFTP egy remek kis program, és lehet, hogy ódivatú, de nálam még sokáig dolgozni fog egészen biztosan! Barátunk a man, mint mindig; jó nosztalgiázást!

Berus