Undgå ._foo Filer i Tarball på OS X: Sådan Gør Du!

Hvordan undgår man, at der oprettes en ekstra fil ._foo i en tarball, når man bruger tar cvf foo.tar foo i OS X, og hvorfor opstår denne fil?

Når du bruger kommandoen tar cvf foo.tar foo i OS X, opstår ._foo filer på grund af OS X's håndtering af metadata og resource forks; for at undgå disse filer kan du bruge flaget --disable-copyfile, bsdtar eller fjerne filerne efter oprettelse af tarballen.

Hvordan undgår man, at der oprettes en ekstra fil ._foo i en tarball, når man bruger tar cvf foo.tar foo i OS X, og hvorfor opstår denne fil?

Når du bruger kommandoen tar cvf foo.tar foo i OS X, kan der oprettes ekstra filer med navne som ._foo. Disse filer opstår på grund af OS X's håndtering af metadata og resource forks. Her er en forklaring på, hvorfor disse filer opstår, og hvordan du kan undgå dem:

Hvorfor opstår ._foo filer?

  • OS X bruger resource forks og extended attributes til at gemme metadata om filer.
  • Når du opretter en tarball, inkluderes disse metadata som separate filer med navne, der begynder med ._.
  • Disse filer kan være nyttige på OS X, men er ofte unødvendige og uønskede på andre systemer.

Sådan undgår du ._foo filer i tarball

Der er flere metoder til at undgå oprettelsen af disse ekstra filer:

Brug af --disable-copyfile flag

  • OS X's version af tar har et specielt flag --disable-copyfile, som forhindrer inkluderingen af resource forks og extended attributes.
  • Kommando: tar --disable-copyfile -cvf foo.tar foo

Brug af BSDSAR i stedet for tar

  • En anden mulighed er at bruge bsdtar, som ikke inkluderer disse metadata som standard.
  • Kommando: bsdtar -cvf foo.tar foo

Fjernelse af ._ filer efter oprettelse af tarball

  • Hvis du allerede har oprettet en tarball og ønsker at fjerne ._ filer, kan du udpakke tarballen, fjerne filerne og pakke den igen.
  • Kommandoer:
    • tar -xvf foo.tar
    • find . -name '._*' -delete
    • tar -cvf foo_clean.tar foo

Ved at følge disse metoder kan du undgå oprettelsen af de ekstra ._ filer i dine tarballs, når du arbejder på OS X.