Quale server HTTP o FTP leggero è adatto per un semplice trasferimento di file? [chiuso]


25

Questa domanda fa seguito a Come copiare i file su un computer non attendibile? , poiché non sembra esserci un'app dedicata per questo scopo, ora sto cercando un server http o ftp come alternativa. Più specificamente, sto cercando un server leggero che sia utilizzabile per un semplice trasferimento di file una tantum tra computer. Con ciò intendo che dovrebbe agire come sostituto di rsync / scp per ottenere file da un computer all'altro, non come un classico server web. Inoltre dovrebbe:

  • eseguire nello spazio utenti
  • essere banale da configurare (cioè nessun file di configurazione, tutto ciò che è possibile fare tramite riga di comando)
  • supporto nome utente / password
  • supportare la continuazione dei download
  • supporta l'esportazione di singoli file anziché di intere directory

La risposta di dbr alla domanda precedente si avvicina, ma ovviamente è solo un hack ad hoc che manca di molte funzionalità utili.


Basta usare Apache2 più velocemente di Python SimpleHTTPServer per circa 4x.
o0omycomputero0o

Risposte:


31

Sto spesso usando questo veloce hack Python per servire una directory su HTTP.

python -m SimpleHTTPServer &

servirà la directory corrente.

Per impostazione predefinita, si collega alla porta 8000.

Per scegliere un'altra porta:

python -m SimpleHTTPServer 9090 &

Se scegli una porta inferiore a 1024 su * nix, potresti aver bisogno dei privilegi di root, altrimenti bind () fallirà.


3
Davvero non sono sicuro del perché questa domanda sia stata chiusa. La domanda e la risposta sono state entrambe molto utili.
merlin2011

8
O l'equivalente di Python 3:python3 -m http.server
Eliran Malka,

6

Qualcuno su SO mi ha indicato Woof . Un httpd minimo in python con un'interfaccia ottimizzata proprio per tali usi. In realtà non soddisfa tutti i requisiti, ma consentendoti di specificare il numero di volte in cui si connetterà ti consente di utilizzare "Sei pronto? Sto avviando il server ora". approccio per garantire il trasferimento.

Per consentire il download di una (1) connessione thisfilesulla porta 8080, è sufficiente eseguire

$ woof thisfile

È così facile

Ecco l'originale piuttosto abusato . Se ti piace, vai a votare per Nate.


Funziona benissimo anche per il "caricamento" (nel caso in cui sia necessario un file di un utente che non può o non installa un server da solo)
golimar

3

Puoi provare webfs che è disponibile tramite il repository Ubuntu:

Webfs (aka webfsd) è un semplice server HTTP per contenuti puramente statici. Puoi usarlo per servire il contenuto di un server FTP via HTTP, per esempio. Può anche essere utilizzato per esportare rapidamente alcuni file avviando un server httpd in pochi secondi, senza prima modificare i file di configurazione.

Un'altra opzione è HFS (Http File Server) , un'app di Windows che funziona bene con Wine .

HFS (Http File Server) è un software di condivisione file che consente di inviare e ricevere file. Puoi limitare questa condivisione a pochi amici o essere aperto a tutto il mondo. HFS è diverso dalla condivisione di file classica perché non esiste una rete. [...] Dato che si tratta in realtà di un server Web, i tuoi amici possono scaricare file come se stessero scaricando da un sito Web utilizzando un browser Web.


1
Che succede con i voti negativi qui? L'OP ha richiesto semplici server http e le persone li hanno offerti. Quindi qual'è il problema.
dmckee,

HFS funziona egregiamente anche per il "caricamento" (nel caso abbiate bisogno di un file da un utente che non può o non installa un server da solo)
golimar

1

Si prega di ignorare se non si è aperti alle alternative, ma il fatto che si è disposti a installare un server HTTP senza preferenze mi mostra che si desidera svolgere il lavoro di trasferimento di un file più di quanto non sia fatto -

Posso raccomandare di installare un server FTP?

Ti permetterà di fare praticamente tutto ciò di cui hai bisogno e di solito è molto facile da configurare, puoi anche configurare la porta per usare 80 se questo è un requisito.


1
Naturalmente anche l'FTP andrebbe bene, ma la maggior parte dei server FTP che conosco non sono esattamente leggeri e dotati di un sacco di brutti bagagli extra che li rendono inadatti per semplici trasferimenti di file una tantum (cioè richiedono diritti di root, account sulla macchina per l'accesso con password , gestione delle directory non flessibile, ecc.). Con Pure-FTPd non sono nemmeno riuscito a capire come avviarlo come utente non root.
Grumbel,

1
Concordato. Si chiama File Transfer Protocol per un motivo. HTTP, d'altra parte, è HyperText Transfer Protocol. È probabile che al momento HyperText non ti interessi.
Lee B,

1
FTP non è un'idea stupida, ma hai un suggerimento per uno che è una palude semplice da configurare come richiesto dall'OP?
dmckee,

1
Il vantaggio di http è che ogni computer di uso generale ha un browser Web e l'utente sarà a suo agio nell'usarlo. OK, supporta anche ftp, ma se hai intenzione di utilizzare comunque un browser web ...
dmckee,

2
Wil, non stiamo parlando di server per scopi generici come Apache qui. Stiamo parlando di strumenti speciali e minimi. Woof rende chttpd pesante .
dmckee,

0

Posso raccomandare http://code.google.com/p/pyftpdlib/ ?
È leggero, scarica il sorgente e scrivi uno script Python (basta copiare la parte di avvio rapido sulla home page, 5-6 righe, impostare nome utente e password, home directory, ecc.)
Lo uso per uso personale trasferimento di file da PC a PC (su Ubuntu Hardy). un problema noto (e posso sopportarlo) è che non riesce a gestire bene Unicode (non ASCII).


0

La risposta è semplice: thttpd. Vince senza dubbio in termini di prestazioni, utilizzo della memoria e sicurezza. E per sicurezza intendo che è sicuro in virtù del design competente e non fa nulla di stupido, non che abbia tutti i tipi di campane e fischietti "di sicurezza". È anche quasi ottimale in termini di dimensioni e semplicità.

Se hai bisogno di ancora più piccolo e semplice, BusyBox ha httpdun'applet che potrebbe anche soddisfare le tue esigenze.

Non sono sicuro che soddisfino alcuni dei tuoi requisiti più off come la pubblicazione di singoli file, ma puoi farlo con un wrapper che inserisce collegamenti simbolici nella radice http. Se lo fai con httpd, tuttavia, dovrai disabilitare le restrizioni del collegamento simbolico.

(So ​​che questa domanda è vecchia, ma è un ottimo risultato su Google e le risposte esistenti sono tutt'altro che leggere.)


2
thttpdera anche la mia risposta preferita, ma è stato rimosso da Debian, Ubuntu e RedHat nel 2011 perché era "orfano, ha bug critici per il rilascio ed è morto a monte". Non lo consiglierei più.
poolie,

0

Puoi anche provare HFS anche chiamato HTTP File Server ( http://www.rejetto.com/hfs/ ) Mentre si tratta di un'applicazione Windows, si dice che funzioni bene usando WINE. La sua manutenzione molto bassa e anche i principianti completi che non sanno nemmeno cosa sia un File Server saranno in grado di usarlo senza troppi sforzi. Supporta la funzionalità di trascinamento della selezione e puoi persino controllare quali indirizzi IP possono accedere ai file e supporta gli account degli utenti e il controllo della velocità di download.


1
Come risponde alla domanda? Sii più preciso.
utente 99572 sta bene il
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.