Ekstrak file dengan umlaut dalam file 7zip yang dibuat di bawah windows ke Linux

0

Saya ingin mengekstrak cadangan besar hard drive saya yang dikompresi dengan 7zip di Windows ke instalasi Debian Wheezy saya. Saya menggunakan baris perintah berikut:

7z x -pmypasswordhere file.7z

Jika sekarang ada file atau folder bernama Äpfel (Bahasa Jerman untuk apel), hasilnya pada hard drive Linux adalah äpfel .

Bagaimana saya bisa mengatasi masalah ini? Saya mencoba menggunakan yang berikut ini, tetapi ini mengatakan bahwa baris perintah tidak valid:

7z x -scsWIN -pmypasswordhere file.7z

... di mana -scssaklar dijelaskan sebagai: "-scs {UTF-8 | WIN | DOS}: set charset untuk daftar file".

Saya telah mengompres file pada Window 8 pada partisi NTFS dengan 7z 9,30 64bit. Pilihannya adalah kekuatan kompresi Ultra . Saya telah mengenkripsi nama file dan isinya dengan AES-265. Instalasi Debian Wheezy saya adalah bahasa Jerman, jadi echo $ LANG adalah "de_DE.UTF-8".

Panjang gelombang
sumber
2
Tampaknya ada sesuatu yang istimewa dengan pengaturan Anda. Saya baru saja mencoba zip file Äpfel.txtdengan saat ini 7-zip(9.20) di bawah windows; mendapatkannya dari http://download.mpy.de/apples.7z. Saya tidak punya masalah dengan versi linux kuno 7z (4,57, tanggal 2007) atau dengan versi 9.04 (dari debian squeeze?). Dalam kedua kasus Äpfel.txtdiekstraksi dengan benar. Apakah string lokal ( locale=de_DE.UTF-8) yang diberikan oleh 7z ketika dimulai tanpa argumen sudah benar dalam kasus Anda? Apa yang echo $LANGdikatakan?
mpy
Silakan lihat edit terbaru yang saya buat di posting awal. Ketika saya menggunakan contoh Anda, saya mendapatkan hasil yang sama. Ada sesuatu yang menarik: img.xn--mg-eka.de/fe997.png . Di sebelah kiri adalah Putty, di sebelah kanan adalah klien FTP saya. "Äpfel.txt" pertama di Putty adalah file dari file 7z Anda. "? Pfel.txt" adalah file yang dibuat dengan klien FTP. Cerita yang menarik: jika saya melakukan hal yang sama di direktori lain, itu berfungsi seperti yang diharapkan ... Saya pikir itu masalah yang lebih umum saya juga melihat ke dalam, tidak ada yang terkait dengan 7z. Terima kasih ya!
The Wavelength
Saya periksa kembali dengan enkripsi AES-265, ini tidak merusak apa pun. (Namun saya lupa menyebutkan bahwa saya hanya dapat menguji dengan Win XP sekarang.) Saya tidak bisa mengikuti cerita Anda dengan FTP sepenuhnya, tetapi dalam pengalaman saya (grafis), klien FTP atau SSH selalu terasa sakit di leher ketika itu jarang terjadi. karakter. Bisakah Anda menggunakan scpatau me-mount berbagi windows?
mpy
Saya sudah mencobanya. Segala sesuatu yang terlihat oke di klien FTP saya terlihat oke di WinSCP dan sebaliknya. Segala sesuatu yang terlihat oke di Putty terlihat salah di WinSCP dan klien FTP saya.
The Wavelength
Saya yakin klien grafis adalah masalahnya. Misalnya untuk WinSCP, FAQ ( wincp.net/eng/docs/ui_login_environment#utf ) menyatakan: ,, UTF-8 tidak didukung dengan protokol SCP. ''
mpy

Jawaban:

3

Agar "äpfel" menjadi "äpfel", Anda perlu mendapatkan äpfel {UTF-8} dan mengonversinya menggunakan ISO-8859-15 ke UTF8. Maka Anda akan mendapatkan äpfel {UTF-8}.

Jadi bagaimana ini bisa terjadi? (Tampaknya tidak ada ISO-8859-1 [5] (Latin1) dalam alur kerja Anda).

Saya percaya saya bisa mereproduksi ini pada partisi VFAT atau NTFS menggunakan mount iocharset=valueopsi. Jika saya mengaturnya ke ISO-8859-15 dan memiliki lokal UTF-8, maka mungkin sistem bisa diakali untuk mengkonversi nama file "ke arah yang salah".

Tapi di sini, instalasi Wheezy Anda kemungkinan besar ext3, dan saya tidak mengetahui opsi NLS untuk ext3.

Kemungkinan lain adalah bahwa file-file tersebut sebenarnya dibuat dengan benar , dan Anda hanya melihatnya salah:

  • apakah Putty diatur untuk menggunakan UTF8?
  • apakah server FTP Anda (dan klien) disetel ke UTF8?

Saya perhatikan hal aneh lainnya: dua file apel Anda, satu di 16:10 dan satu di 16:34, tampaknya ditampilkan dengan lsmenggunakan dua format tanggal yang berbeda. Dalam satu kasus, tahun ditentukan.

Mungkin 7z membuat entri inode yang sedikit tidak biasa?

Namun, di sini ada trik menggunakan convmvutilitas yang mungkin bisa membantu.

LSerni
sumber
Terima kasih banyak! Nah, pertanyaannya bukan yang mana pengkodean yang disukai. Yang ditampilkan dengan baik di dempul atau yang ditampilkan dengan baik di FTP dan dapat diakses melalui server web? Saya tidak begitu tahu.
The Wavelength
Jika Anda dapat memeriksa konfigurasi berbagai "saluran", Anda harus dapat membuatnya berfungsi di mana-mana . Tampaknya ada ISO-8859-1 yang tersembunyi di suatu tempat. Saya akan mencoba menjalankan convmvpada sampel file kecil.
LSerni
1

The -scspilihan adalah hanya untuk @listfiles yang tampaknya menjadi sebuah file yang berisi daftar nama file. Ini tidak akan memengaruhi charset nama file Anda.

Salah satu solusi yang mungkin akan dijalankan iconvdengan opsi yang sesuai terhadap semua file Anda setelah Anda mengekstraknya.

scai
sumber
Apa pilihan yang tepat?
The Wavelength
Pengkodean sistem file Windows Anda dan pengodean sistem file Linux Anda. Yang pertama tampaknya menjadi UTF-16 untuk NTFS dan yang terakhir mungkin UTF-8 . Cobalah di file Äpfel Anda.
scai
-1

Setelah mengekstraksi file, cukup ganti namanya melalui mv atau browser file Anda, tidak ada salahnya.

Untuk mengganti nama file massal, jika Anda terpaksa melakukannya, Anda bisa menggunakan find (with -exec), atau krename.

bayindirh
sumber
1
Cadangan lebih dari 100GB dan lebih dari 100.000 file ...
The Wavelength