web-dev-qa-db-fra.com

Comment décompresser des fichiers via une connexion FTP?

Je me suis connecté à mon serveur distant via FTP et j'ai obtenu une liste de répertoires. J'ai quelques fichiers Zip dans la liste.

Est-il possible de décompresser le fichier (Ex: test.Zip) ?. Si oui, quelle est la commande?

19
Hearaman

Il n'est pas possible de décompresser des fichiers via une connexion FTP. FTP signifie "File Transfer Protocol" (protocole de transfert de fichier), qui n'a été conçu que pour transférer et gérer en partie des fichiers à distance, mais pas pour exécuter des commandes. Pour décompresser une archive, vous devez exécuter un programme tel que tar, bzip2 ou similaire, mais ce n'est pas possible via une connexion FTP.

Vous avez besoin d'une autre session qui vous permet d'exécuter des commandes, comme SSH. Ou vous décompressez l'archive sur votre machine et transférez le contenu par FTP, ce qui sera beaucoup plus lent si vous avez un grand nombre de petits fichiers en raison de la surcharge de FTP.

14
Bobby

Un petit peu hors contexte répond mais fonctionne sûrement. Si vous utilisez Apache + php sur ce répertoire ftp, téléchargez votre fichier Zip dans ce dossier et créez extractor.php:

$Zip = new ZipArchive;
if ($Zip->open('my_Zip.zip') === TRUE) {
    $Zip->extractTo('/path/to/my/Zip');
    $Zip->close();
    echo 'ok';
}

puis tapez URL, par exemple: http://example.com/extractor.php bingo php va extraire ce fichier Zip pour vous.

15
Touqeer Shafi

Vous pouvez le faire si vous montez une ressource ftp en utilisant curlftpfs:

curlftpfs ftp://ftp.server.org/ /path/to/mountpoint

puis

unzip /path/to/mount/test.Zip
3
jet

Votre objectif est-il de le décompresser sur le serveur externe ou souhaitez-vous extraire le contenu de l'archive ? ordinateur ?

Le premier cas n'est pas résolu par FTP, mais par SSH ou par des techniques similaires à celles décrites dans d'autres réponses.

Si vous souhaitez simplement transférer le contenu décompressé "directement" sur votre ordinateur sans tout d'abord transférer explicitement les fichiers, puis décompresser, vous pouvez par exemple montez le site FTP en tant que dossier et décompressez-le en tant que fichier Zip normal vers un emplacement de votre ordinateur local. Ceci dans la pratique diffusera le contenu du fichier directement dans le programme de décompression. Ainsi, techniquement faites transférer le fichier entier, mais uniquement dans les fichiers. son état compressé (supposant que le trafic est économisé) et le contenu apparaîtra directement sur votre ordinateur local sans l'étape intermédiaire explicite.

Je ne sais pas comment le format de fichier Zip est spécifié pour décompresser simplement une partie d'un fichier Zip; si vous devez néanmoins transférer le fichier entier ou uniquement la partie compressée correspondant à ce fichier. Je ne vois aucune raison technique réelle expliquant pourquoi ce type de transfert sélectif ne serait pas possible (le protocole FTP ne permet de transférer que des fichiers partiels pour permettre la reprise).

2
Daniel Andersson

Vous pouvez utiliser unzip après avoir exécuté Sudo apt-get install unzip.

2
fraabye
2
Sanath

Pour autant que je sache, certains serveurs FTP sont configurés pour décompresser automatiquement les fichiers au téléchargement. Par exemple, le serveur répertorie un fichier nommé test.txt.gz. Avec votre client ftp, vous pouvez taper get test.txt. Le serveur envoie ensuite le fichier par unzip.

C’est la réponse qui peut être lue juste avant le début du téléchargement: 150 Opening ASCII mode data connection for /usr/bin/gzip.

0
Kay