3 votes

La capture APFS change-t-elle après sa création ?

Je ne comprends probablement tout simplement pas comment fonctionnent les instantanés APFS, mais cela me semble étrange :

~ $ mkdir /private/tmp/snap
~ $ pwd
/Users/dmd
~ $ ls foo
ls: foo: Aucun fichier ou dossier de ce type
~ $ tmutil localsnapshot /
Created local snapshot with date: 2020-02-28-191657
~ $ tmutil listlocalsnapshots /
Snapshots for volume group containing disk /:
com.apple.TimeMachine.2020-02-28-191657.local
~ $ mount_apfs -s com.apple.TimeMachine.2020-02-28-191657.local / /private/tmp/snap
mount_apfs: snapshot implicitly mounted readonly
~ $ ls /private/tmp/snap/Users/dmd/foo
ls: /private/tmp/snap/Users/dmd/foo: Aucun fichier ou dossier de ce type
~ $ touch /Users/dmd/foo
~ $ ls /private/tmp/snap/Users/dmd/foo
/private/tmp/snap/Users/dmd/foo
~ $ ##### QUOI? POURQUOI FOO EST-IL DANS L'INSTANTANÉ? POURQUOI L'INSTANTANÉ A-T-IL CHANGÉ?
~ $ rm /Users/dmd/foo
~ $ ls /private/tmp/snap/Users/dmd/foo
ls: /private/tmp/snap/Users/dmd/foo: Aucun fichier ou dossier de ce type

Remarquez que le fichier /Users/dmd/foo est créé sur le disque 'réel', mais lorsque cela est créé et supprimé, ces modifications apparaissent également dans l'instantané monté.

Pourquoi?

0 votes

Quelle version de macOS utilisez-vous ?

4voto

Jose Chavez Points 645

Je pense que ta conclusion est fausse - même si elle semble ainsi superficiellement, la capture d'écran n'est en fait pas modifiée.

La chose qui te trompe ici est qu'un des dossiers dans ton chemin est en réalité un lien. Si tu utilises une version de macOS antérieure à Catalina, tu as probablement /Users en tant que lien symbolique. Si tu utilises Catalina, /Users est un firmlink.

Cela signifie que lorsque tu exécutes ls /private/tmp/snap/Users/dmd/foo pour vérifier le fichier, tu ne regardes en fait pas un fichier à l'intérieur de la capture d'écran, mais plutôt le système va parcourir le lien à l'intérieur de la capture d'écran et sur ton volume ordinaire pour le fichier réel.

Si tu es sur Catalina et que tu veux refaire tes commandes sans que le lien interfère, il te faudra alors utiliser la commande suivante pour vérifier l'existence du fichier à l'intérieur de la capture d'écran :

ls /private/tmp/snap/System/Volumes/Data/Users/dmd/foo

0 votes

Aha! C'était ça! Sauf que la capture d'écran doit être de /System/Volumes/Data, et non de / bien sûr. (Et, sans rapport, je trouve étrange que la création de la capture d'écran prenne jusqu'à une minute ; je pensais que c'était censé être instantané, comme dans zfs.)

1 votes

Pourquoi /Users pre-Catalina serait-il un lien symbolique ?

1 votes

@MarcWilson Peut-être un peu mal formulé dans la réponse... ce que je voulais dire, c'est que SI vous obtenez les résultats qui sont dans la question, ALORS vous avez probablement un lien symbolique. Je ne voulais pas dire que si vous avez une version antérieure à Catalina, vous avez probablement un lien symbolique. Ce n'est pas vrai. Mais j'ai vu certaines personnes utiliser des liens symboliques pour décharger de grands dossiers sur d'autres lecteurs que le lecteur de démarrage (ou avoir monté NFS ou similaire pour le stocker sur un serveur), donc si l'OP ne tournait pas sous Catalina, ce serait le cas. Maintenant que nous savons qu'il est sur Catalina, c'est certainement un firmlink.

LesApples.com

LesApples est une communauté de Apple où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres utilisateurs d'appareils Apple, poser vos propres questions ou résoudre celles des autres.

Powered by:

X