Je l'ai essayé avec SCP, mais il indique "Taille de fichier négative".
>scp matlab.iso xxx@xxx:/matlab.iso
matlab.iso: Negative file size
A également essayé d'utiliser SFTP, a bien fonctionné jusqu'à ce que 2 Go du fichier soient transférés, puis s'est arrêté:
sftp> put matlab.iso
Uploading matlab.iso to /home/x/matlab.iso
matlab.iso -298% 2021MB -16651.-8KB/s 00:5d
o_upload: offset < 0
Une idée de ce qui pourrait être faux? SCP et SFTP ne prennent-ils pas en charge les fichiers de plus de 2 Go? Si oui, comment puis-je transférer des fichiers plus gros via SSH?
Le système de fichiers de destination est ext4. La distribution Linux est CentOS 6.5. Le système de fichiers contient actuellement de gros fichiers (accessibles) (jusqu'à 100 Go).
Le problème d'origine (basé sur la lecture de tous les commentaires de la question OP) était que l'exécutable scp
sur le système 64 bits était une application 32 bits. Une application 32 bits qui n'est pas compilée avec "support de fichiers volumineux" se retrouve avec des pointeurs de recherche limités à 2^32 =~ 4GB
.
Vous pouvez dire si scp
est 32 bits en utilisant la commande file
:
file `which scp`
Sur la plupart des systèmes modernes, il sera de 64 bits, donc aucune troncature de fichier ne se produira:
$ file `which scp`
/usr/bin/scp: ELF 64-bit LSB shared object, x86-64 ...
Une application 32 devrait toujours être capable de prendre en charge les "gros fichiers" mais elle doit être compilée à partir des sources avec une prise en charge des gros fichiers, ce qui n'était apparemment pas le cas.
La solution recommandée est peut-être d'utiliser une distribution 64 bits standard complète où les applications sont compilées en 64 bits par défaut.
Rsync est très bien adapté pour transférer des fichiers volumineux sur ssh car il est capable de poursuivre les transferts qui ont été interrompus pour une raison quelconque. Puisqu'il utilise des fonctions de hachage pour détecter des blocs de fichiers égaux, la fonction continue est assez robuste.
Il est assez surprenant que vos versions sftp
/scp
ne semblent pas prendre en charge les fichiers volumineux - même avec des binaires 32 bits, support LFS devrait être assez standard, de nos jours .
Je ne suis pas sûr des limites de taille de fichier de SCP et SFTP, mais vous pouvez essayer de contourner le problème avec split:
split -b 1G matlab.iso
Cela créera 1 GiB fichiers qui, par défaut, sont nommés xaa, xab, xac, ...
. Vous pouvez ensuite utiliser scp pour transférer les fichiers:
scp xa* xxx@xxx:
Ensuite, sur le système distant, recréez le fichier d'origine avec cat:
cat xa* > matlab.iso
Bien sûr, les pénalités pour cette solution de contournement sont le temps pris dans les opérations split et cat, ainsi que l'espace disque supplémentaire nécessaire sur les systèmes locaux et distants.