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).
scp
sftp
large-files
eimrek
la source
la source
-D_LARGEFILE_SOURCE -D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64
. Mais si vous exécutez un système 64 bits 6.5, il serait probablement plus facile d'installer les administrateursopenssh-5.3p1-94.el6_6.1.x86_64
et àopenssh-server-5.3p1-94.el6_6.1.x86_64
partir des référentiels standard.Réponses:
Le problème d'origine (basé sur la lecture de tous les commentaires de la question OP) était que l'
scp
exécutable sur le système 64 bits était une application 32 bits. Une application 32 bits qui n'est pas compilée avec la «prise en charge des gros fichiers» se retrouve avec des pointeurs de recherche limités à2^32 =~ 4GB
.Vous pouvez dire si
scp
est 32 bits en utilisant lafile
commande:Sur la plupart des systèmes modernes, il sera de 64 bits, donc aucune troncature de fichier ne se produira:
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 que ce cas n'était apparemment pas.
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.
la source
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 les binaires 32 bits, le support LFS devrait être assez standard, de nos jours.la source
rsync
c'est une bonne idée maintenant. Utilisez l'-P
option pour à la fois obtenir une indication de progression et demander au destinataire de conserver un fichier incomplet au cas où le transfert serait à nouveau interrompu.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:
Cela va créer 1 fichiers GiB qui, par défaut, sont nommés comme
xaa, xab, xac, ...
. Vous pouvez ensuite utiliser scp pour transférer les fichiers:Ensuite, sur le système distant, recréez le fichier d'origine avec cat:
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.
la source