Linux dd peut-il copier un seul fichier d’une partition formatée ext4 vers une partition NTFS?

0

1) J'aimerais copier un seul fichier de la partition au format ext4 d'Ubuntu 18.04 vers la partition au format NTFS de Windows 10 sans passer par une partition FAT32 intermédiaire. La commande "dd" dans Ubuntu peut-elle le faire? Quelles commandes "mount" pourraient être nécessaires pour faire cela?

2) Si la source est un bloc d'octets plutôt qu'un fichier, "dd" peut-il transférer ces octets vers un format de fichier dans la partition au format NTFS? (J'essaie de configurer le fichier "\ linux.bin" avec le BCDedit de Windows pour un double démarrage sur Ubuntu, comme dans: bcdedit / set {id long ici} chemin C: \ linux.bin où dd est if = est un secteur de 512 octets.)

TimDaniels

TimDaniels
la source

Réponses:

3

1) J'aimerais copier un seul fichier de la partition au format ext4 d'Ubuntu 18.04 vers la partition au format NTFS de Windows 10 sans passer par une partition FAT32 intermédiaire. La commande "dd" dans Ubuntu peut-elle le faire? Quelles commandes "mount" pourraient être nécessaires pour faire cela?

dd ne se soucie pas des partitions ou des systèmes de fichiers. Son entrée et sa sortie sont des fichiers ordinaires, et la seule chose qu'il fait est de copier des données, octet par octet (ou morceau par morceau) de son entrée à sa sortie.

Dans votre cas, dd n’est pas plus utile que cp ou même chat ordinaire . Une fois que vous avez monté la partition ext4 source et la partition NTFS de destination sous Linux, vous pouvez simplement ... copier les fichiers à l'aide de cp ou d'autres outils classiques, voire à l'aide d'un gestionnaire de fichiers graphique.

Pour monter un système de fichiers NTFS avec des fonctionnalités de lecture / écriture, installez-le ntfs-3g. Aucune option spéciale n’est nécessaire du côté de Linux (en général), mais s’il s’agit d’un disque interne, vous devez vous assurer que Windows l’a complètement démonté lors de l’arrêt - c’est-à-dire qu’il n’est pas entré en mode 'hibernation', 'hybride' ou ' mode de démarrage rapide '.

(Par exemple, vous pouvez utiliser shutdown /s /t 0Windows pour commencer un arrêt complet.)

2) Si la source est un bloc d'octets plutôt qu'un fichier, "dd" peut-il transférer ces octets vers un format de fichier dans la partition au format NTFS? (J'essaie de configurer le fichier "\ linux.bin" avec le BCDedit de Windows pour un double démarrage sur Ubuntu, comme dans: bcdedit / set {id long ici} chemin C: \ linux.bin où dd est if = est un secteur de 512 octets.)

Même réponse que précédemment. dd ne comprend pas les systèmes de fichiers; il ne fait que copier des fichiers. Donc, si la sortie doit être un fichier sur NTFS, vous devez monter le système de fichiers NTFS dans Linux même, puis dd écrira simplement dans le fichier que vous lui donnez.

Donc, montez simplement la partition NTFS comme vous l'avez fait dans la partie 1 ci-dessus, et utilisez-le dd if=/dev/xxx of=/mnt/windows/linux.bin bs=... count=...pour copier le code de démarrage.

La taille du secteur n'a pas d'importance pour les données finales. Elle indique uniquement à dd la taille d'un morceau à lire en une fois. Par exemple, lire un seul morceau de 512 octets est beaucoup plus rapide que de lire 512 morceaux de un octet, mais les données obtenues seront identiques dans les deux cas.

(C’est-à-dire, dd if=A of=B bs=1 count=512et dd if=A of=B bs=512 count=1créera des fichiers identiques, en le faisant à des vitesses différentes.

En fait, head -c 512 A > Bcréera un fichier identique aux deux.)

Grawity
la source
1
Upvoted, un problème cependant: lors de la spécification, countvous ne pouvez pas obtenir des fichiers identiques. Vous serez surpris si ddlit un bloc d'entrée partielle. Cela comptera toujours comme une lecture réussie mais fournira moins que des ibsdonnées. En effet, lorsque vous atteignez, countvous n'atteindrez pas la quantité de données souhaitée. Je n'ai jamais vu cela en lisant un système de fichiers local, mais en général (pipes, pipes nommées, montages réseau?, FUSE?) Dont vous avez besoin iflag=fullblock. Preuve de concept: </dev/zero dd bs=1 | dd bs=4M count=2 | wc -c.
Kamil Maciorowski
Apparemment, dd n'a pas besoin que la source soit un fichier nommé, mais elle ne peut également prendre qu'un bloc de code hexadécimal à partir d'un emplacement physique identifié uniquement par son numéro de secteur. et écrivez-le dans un fichier d'un format qui correspond au système de fichiers de destination, en ajoutant des métadonnées et une structure d'enregistrement au cours du processus. Vrai? Faux?
TimDaniels
Ntfs-3g est-il inclus dans Ubuntu 18.04 ou doit-il être téléchargé à partir d'un référentiel en ligne? Une fois que ntfs-3g est installé et que les commandes "mount" appropriées sont exécutées, dd peut copier le MBR, connu uniquement par son emplacement au début du disque, ou un enregistrement de démarrage de partition connu uniquement par son emplacement au début de la partition. , directement dans un fichier d’une partition NTFS (telle que Windows) sans utiliser de partition FAT32 partagée intermédiaire?
TimDaniels
@ TimDaniels: Cela fait partie des référentiels centraux, bien que je ne sois pas sûr que cela fasse partie de l'installation "de base". Existe-t-il une autre raison, outre le support ntfs-3g, pour laquelle vous demandez si une partition intermédiaire serait nécessaire?
Grawity
1
@ TimDaniels: La source dans dd if=…, ainsi que la destination, est toujours un fichier nommé. Il s’agit peut-être d’un fichier "périphérique" virtuel fourni par le noyau, mais, à la connaissance de dd, ce n’est toujours qu’un fichier. dd n'ajoute jamais aucune métadonnée. dd n'ajoute jamais aucune structure d'enregistrement. dd ne comprend pas les systèmes de fichiers. La seule façon de créer un fichier sur NTFS est de monter le système de fichiers NTFS globalement.
Grawity