Salinan file yang tepat dari NTFS ke NTFS lain menggunakan Linux

14

Saya mencoba untuk menyalin semua file dari NTFS ke drive eksternal dan ingin mempertahankan semua izin dan atribut. Drive eksternal sudah memiliki NTFS dan berisi file lain.

Saya telah mempertimbangkan untuk menggunakan alat-alat berikut:

  • ntfsclonetidak berfungsi karena beroperasi pada level sektor dan akan mengkloning seluruh FS, sehingga menghancurkan data lama. Jika digunakan untuk membuat file gambar, saya tidak dapat mengakses konten dari mesin Windows.
  • rsync tidak menyimpan semua data meta.

Alternatifnya adalah menggunakan robocopydi dalam Windows yang sedang berjalan, tapi saya lebih suka menyalin file tanpa. (Partisi sumber digunakan sebagai sistem C:\.)

Bagaimana saya bisa menyalin file?

Scolytus
sumber
5
Metadata apa yang ingin Anda pertahankan di sini sehingga RSYNC tidak akan mempertahankan dengan parameter yang sesuai? Apakah Anda merujuk pada metadata jenis perangkat lunak file musik atau izin FS aktual, struktur, waktu, pemilik, dll? Saya tidak yakin apa yang telah Anda coba dengan RSYNC tetapi tampaknya menggunakan parameter yang benar seperti -AXogtmisalnya harus mempertahankan metadata FS untuk sebagian besar. Tolong jelaskan apa yang Anda coba yang tidak berhasil dan apa "metadata" yang Anda lihat yang tidak disimpan di antara partisi NTFS.
Pimp Juice,
Saya tahu file-file itu sendiri dapat disalin dengan tepat byte-for-byte di linux, tetapi apakah itu semua tanggal seperti dibuat, dimodifikasi, diakses yang hilang? Atau pengguna / pemilik & izin NTFS? Apakah tidak ada cara untuk mengubah tanggal & izin ini pada file setelah disalin kembali ke windows NTFS?
Xen2050

Jawaban:

8

Tidak ada cara untuk secara tepat menyalin file NTFS, melewati Linux. Bahkan Wine , lapisan kompatibilitas Windows pada Linux, bekerja dengan mengonversi izin bolak-balik antara Linux dan Windows, dan karenanya terbatas pada (agak kecil) penyebut yang paling tidak umum.

Satu-satunya solusi yang dapat saya lihat adalah menjalankan Windows di Linux di dalam mesin virtual (atau fisik).

Saya yakin Anda telah menyebutkan kemungkinan ini di pos Anda dan lebih suka menghindarinya, tetapi saya tidak melihat kemungkinan lain. Hanya Windows yang dapat menyalin file NTFS secara tepat; Linux hanya mampu menyalin partisi NTFS.

Artikel ini mungkin membantu: Cara menginstal dan menjalankan Microsoft Windows secara gratis di Linux , menggunakan mesin virtual gratis yang tersedia untuk diunduh oleh Microsoft .

harrymc
sumber
Saya tidak yakin tentang itu, tetapi menurut halaman manual dari ntfs-3g, opsi streams_interface=xattrdiatur secara default. Jika saya memahaminya dengan benar, ini berarti bahwa atribut file NTFS (termasuk izin Windows) dipetakan ke xattratribut di linux. Karena cp -adan rsync -Xapakah menyalin atribut ini, bukankah seharusnya itu salinan yang tepat?
JojOatXGME
@JojOatXGME: Model izin Windows dan Linux sangat berbeda. Hanya atribut paling dasar yang memiliki rekanan yang tepat.
harrymc
Aku tahu. Saya tidak mengklaim bahwa Linux memahami atribut ini, tetapi atribut xattr adalah paris-nilai-kunci yang tidak harus dipahami oleh sistem operasi. ntfs-3g tampaknya membuat izin Windows tersedia sebagai atribut xattr system.ntfs_acl. Hal yang sama tampaknya berlaku untuk matadata lain di NTFS. Karena atribut xattr disalin saat menggunakan rsync -Xatau cp -a, itu mungkin menyalin metadata juga. Itu tergantung pada batasan nyata xattrdan implementasi ntfs-3g, tetapi tampaknya mungkin bagi saya.
JojOatXGME
jadi bagaimana kita bisa menguji ini dengan benar? Itulah yang kita butuhkan dengan pernyataan seperti ini. Bisa saja bermanfaat kalau bisa diuji ....
UV
1

Hal pertama adalah, Anda harus mengambil keputusan jika ingin menyalin file, ...

atau Anda ingin membuat salinan lengkap sektor per sektor dari NTFS Anda, termasuk "data lama", "file lain", juga "semua metadata" yang telah Anda sebutkan di atas dengan sangat luas.

Untuk yang terakhir, gunakan dd:

dd if=/dev/sda2 of=/mnt/usbdisk/my-ntfs-partition-D.img bs=1M

Selamat bersenang-senang.

Paxsali
sumber
2
Yah, saya sudah memutuskan, dan itu sudah ada dalam pertanyaan. Saya ingin menyalin file dengan semua data meta terkait. Ini harus dimungkinkan karena sumber FS dan juga FS tujuan adalah NTFS, sehingga memiliki kemampuan yang sama. Menggunakan ddakan menjadi pilihan yang buruk karena tidak memperhitungkan informasi FS. Jika Anda memiliki NTFS, Anda harus selalu menggunakannya ntfscloneuntuk pembuatan gambar.
Scolytus
Dalam hal ini gunakan robocopy atau ntfscopy ( tzworks.net/prototype_page.php?proto_id=9 ), tetapi tidak ada yang tersedia di linux.
Paxsali
Baiklah, saya juga menyebutkan robocopydalam pertanyaan saya. Jadi saya menghargai kemampuan Anda, tetapi itu bukan jawaban untuk pertanyaan saya.
Scolytus
1

Linux dapat menyalin isi file NTFS dengan baik, hanya saja tidak semua tanggal / atribut yang dimodifikasi / dibuat / diakses (saya berasumsi itu yang ingin Anda pertahankan).

Jadi mengapa Anda tidak mencatat tanggal & atribut saat ini ( dirharus bisa menampilkannya), lalu salin file di linux, dan begitu Anda menjalankan Windows lagi ubah tanggal & atribut kembali ke aslinya.

Gunakan alat di Windows yang dapat mengubah file, seperti yang ini :

Rupanya File Explorer milik Windows sendiri bahkan tidak mempertahankan semua tanggal file dengan benar . Tetapi perintah tar zip & cygwin harus menyimpan tanggal file, jadi menggunakan salah satu dari Windows untuk membuat arsip terlebih dahulu harus bekerja juga, kemudian salin arsip dengan cara lama.


Jika atribut sangat penting, dan sulit untuk menyalin bahkan di Windows, mereka mungkin harus didukung dalam file teks atau database, atau dibuat menjadi bagian dari nama file ...

Xen2050
sumber