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 0
Windows 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=512
et dd if=A of=B bs=512 count=1
créera des fichiers identiques, en le faisant à des vitesses différentes.
En fait, head -c 512 A > B
créera un fichier identique aux deux.)
count
vous ne pouvez pas obtenir des fichiers identiques. Vous serez surpris sidd
lit un bloc d'entrée partielle. Cela comptera toujours comme une lecture réussie mais fournira moins que desibs
données. En effet, lorsque vous atteignez,count
vous 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 besoiniflag=fullblock
. Preuve de concept:</dev/zero dd bs=1 | dd bs=4M count=2 | wc -c
.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.