Trasferimento di file di grandi dimensioni (8 GB) su ssh


27

L'ho provato con SCP, ma dice "Dimensione file negativa".

>scp matlab.iso xxx@xxx:/matlab.iso
matlab.iso: Negative file size

Ha anche provato a utilizzare SFTP, ha funzionato bene fino a quando non sono stati trasferiti 2 GB del file, quindi si è interrotto:

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

Qualche idea di cosa potrebbe esserci di sbagliato? SCP e SFTP non supportano file di dimensioni superiori a 2 GB? In tal caso, come posso trasferire file più grandi su SSH?

Il file system di destinazione è ext4. La distribuzione Linux è CentOS 6.5. Il file system attualmente contiene file (accessibili) di grandi dimensioni (fino a 100 GB).


5
Sembra un superamento variabile delle dimensioni. Ma AFAIK scp / sftp non ha limiti di dimensioni. Qual è il file system di destinazione? Supporta LARGEFILES?
Milind Dumbare,

1
Che dire delle applicazioni sftp e scp? Puoi scoprirlo usando il comando file nei loro binari.
mdpc,

1
@ pastore - sì.
mdpc,

2
Le applicazioni a 32 bit possono accedere a file di grandi dimensioni se vengono compilate -D_LARGEFILE_SOURCE -D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64. Ma se stai eseguendo un sistema 6.5 a 64 bit, probabilmente sarebbe più facile avere gli amministratori installati openssh-5.3p1-94.el6_6.1.x86_64e openssh-server-5.3p1-94.el6_6.1.x86_64dai repository standard.
Mark Plotnick,

1
lol al software usando numeri interi con segno per dimensione file
Lightness Races con Monica

Risposte:


9

Il problema originale (basato sulla lettura di tutti i commenti alla domanda OP) era che l' scpeseguibile sul sistema a 64 bit era un'applicazione a 32 bit. Un'applicazione a 32 bit che non è compilata con "supporto per file di grandi dimensioni" finisce con i puntatori di ricerca che sono limitati a 2^32 =~ 4GB.

Puoi dire se scpè a 32 bit usando il filecomando:

file `which scp`

Sulla maggior parte dei sistemi moderni sarà a 64 bit, quindi non si verificherebbe alcun troncamento dei file:

$ file `which scp`
/usr/bin/scp: ELF 64-bit LSB  shared object, x86-64 ...

Un'applicazione a 32 dovrebbe essere ancora in grado di supportare "file di grandi dimensioni", ma deve essere compilata dall'origine con supporto per file di grandi dimensioni che apparentemente non era questo caso.

La soluzione consigliata è forse quella di utilizzare una distribuzione a 64 bit standard completa in cui le app vengono compilate come 64 bit per impostazione predefinita.


33

Rsync è molto adatto per il trasferimento di file di grandi dimensioni su ssh perché è in grado di continuare i trasferimenti che sono stati interrotti per qualche motivo. Dal momento che utilizza le funzioni hash per rilevare blocchi di file uguali, la funzione continue è abbastanza robusta.

È sorprendente che la tua sftp/ scpversione non supporti file di grandi dimensioni - anche con binari a 32 bit, il supporto LFS dovrebbe essere piuttosto standard, al giorno d'oggi.


4
Dato che gran parte del file è già trasferito, rsyncè una buona idea ora. Utilizzare l' -Popzione per ottenere sia l'indicazione dell'avanzamento sia per indicare al destinatario di conservare un file incompleto nel caso in cui il trasferimento venga nuovamente interrotto.
Simon Richter,

25

Non sono sicuro dei limiti di dimensione del file di SCP e SFTP, ma potresti provare a aggirare il problema con split:

split -b 1G matlab.iso

Ciò creerà 1 file GiB che, per impostazione predefinita, sono denominati come xaa, xab, xac, .... È quindi possibile utilizzare scp per trasferire i file:

scp xa* xxx@xxx:

Quindi sul sistema remoto ricreare il file originale con cat:

cat xa* > matlab.iso

Naturalmente, le penalità per questa soluzione alternativa sono il tempo impiegato nelle operazioni split e cat, nonché lo spazio su disco aggiuntivo necessario sui sistemi locale e remoto.


1
buona idea. Ho già trasferito il file con un'unità USB, ma probabilmente sarebbe stato più conveniente. Tuttavia, non è conveniente come far funzionare correttamente scp e sftp.
eimrek,
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.