Saya mencobanya dengan SCP, tetapi tertulis "Ukuran file negatif".
>scp matlab.iso xxx@xxx:/matlab.iso
matlab.iso: Negative file size
Juga mencoba menggunakan SFTP, berfungsi dengan baik hingga 2 GB file telah ditransfer, lalu berhenti:
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
Adakah yang tahu apa yang salah? Jangan SCP dan SFTP mendukung file yang lebih besar dari 2 GB? Jika demikian, lalu bagaimana saya bisa mentransfer file yang lebih besar melalui SSH?
Sistem file tujuan adalah ext4. Distribusi Linux adalah CentOS 6.5. Sistem file saat ini memiliki (dapat diakses) file besar di dalamnya (hingga 100 GB).
scp
sftp
large-files
eimrek
sumber
sumber
-D_LARGEFILE_SOURCE -D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64
. Tetapi jika Anda menjalankan sistem 6.5 64-bit, mungkin akan lebih mudah untuk menginstal adminopenssh-5.3p1-94.el6_6.1.x86_64
danopenssh-server-5.3p1-94.el6_6.1.x86_64
dari repo standar.Jawaban:
Masalah aslinya (berdasarkan membaca semua komentar untuk pertanyaan OP) adalah bahwa
scp
dieksekusi pada sistem 64-bit adalah aplikasi 32-bit. Aplikasi 32-bit yang tidak dikompilasi dengan "dukungan file besar" berakhir dengan mencari pointer yang terbatas2^32 =~ 4GB
.Anda dapat mengetahui apakah
scp
32-bit dengan menggunakanfile
perintah:Pada kebanyakan sistem modern, itu akan menjadi 64-bit, jadi tidak akan ada pemotongan file:
Sebuah aplikasi 32 seharusnya masih dapat mendukung "file besar" tetapi harus dikompilasi dari sumber dengan dukungan file besar yang ternyata kasus ini tidak.
Solusi yang disarankan adalah mungkin menggunakan distribusi 64-bit standar penuh di mana aplikasi dikompilasi sebagai 64-bit secara default.
sumber
Rsync sangat cocok untuk mentransfer file besar melalui ssh karena dapat melanjutkan transfer yang terputus karena beberapa alasan. Karena menggunakan fungsi hash untuk mendeteksi blok file yang sama, fitur terus cukup kuat.
Agak mengejutkan bahwa
sftp
/scp
versi Anda tampaknya tidak mendukung file besar - bahkan dengan binari 32 Bit, dukungan LFS harus cukup standar, saat ini.sumber
rsync
ada baiknya sekarang. Gunakan-P
opsi untuk mendapatkan indikasi kemajuan dan memerintahkan penerima untuk menyimpan file yang tidak lengkap jika transfer terputus lagi.Saya tidak yakin tentang batas ukuran file SCP dan SFTP, tetapi Anda dapat mencoba mengatasi masalah dengan split:
Ini akan membuat 1 file GiB yang, secara default, dinamai
xaa, xab, xac, ...
. Anda kemudian dapat menggunakan scp untuk mentransfer file:Kemudian pada sistem jarak jauh buat ulang file asli dengan cat:
Tentu saja, hukuman untuk penyelesaian ini adalah waktu yang diambil dalam operasi split dan cat, serta ruang disk tambahan yang diperlukan pada sistem lokal dan jarak jauh.
sumber