MacWorld forum Just nu i M3-nätverket
Gå till innehåll
xeric

Komprimera/packa filer

Rekommendera Poster

8 timmar sedan, modEric säger:

Visst kan du det. Även med det jag skrev i 1'a spoilern där uppe, med xz. Förutsatt att du har xz installerat. Det sista jag skrev där var bara samma som Mattias skrev, fast man bara anv tar. ...

 

8 timmar sedan, Mattiasgbg säger:

De ska du kunna göra, om du först installerar xz, vilket jag inte har. Tar-raden är det som behöver ändras.

Tack, jag har installerat xz, men får det inte att fungera. Fattar inte hur den där tar-raden ska ändras, de ser så olika ut.

Dela detta inlägg


Länk till inlägg
Dela på andra webbplatser
28 minuter sedan, Alix säger:

 

Tack, jag har installerat xz, men får det inte att fungera. Fattar inte hur den där tar-raden ska ändras, de ser så olika ut.

tar -cvf - --exclude={'.DS_Store','._*'} "$1" | xz -6e > "$1".tar.xz

antar jag, alltså utan ; i slutet. Samt att variabelnamnet "$1" anpassas.

Fast jag är lite osäker, @modEric, ska det vara - mellan -cvf och --exclude...?

Dela detta inlägg


Länk till inlägg
Dela på andra webbplatser
23 minuter sedan, Mattiasgbg säger:

tar -cvf - --exclude={'.DS_Store','._*'} "$1" | xz -6e > "$1".tar.xz

antar jag, alltså utan ; i slutet. Samt att variabelnamnet "$1" anpassas.

Fast jag är lite osäker, @modEric, ska det vara - mellan -cvf och --exclude...?

Om jag använder detta:

for f in "$@"
do
	tar -cvf - --exclude={'.DS_Store','._*'} "$f" | xz -6e > "$f".tar.xz
done

... får jag följande felmeddelande:

 

5ad06f9ab59cf_dump1.jpg.911bbc1c8f69f0e76fd02ce772f3868e.jpg

 

Jag har installerat xz via:

brew install xz

 

Dela detta inlägg


Länk till inlägg
Dela på andra webbplatser
14 minuter sedan, Alix säger:

Om jag använder detta:


for f in "$@"
do
	tar -cvf - --exclude={'.DS_Store','._*'} "$f" | xz -6e > "$f".tar.xz
done

... får jag följande felmeddelande:

 

5ad06f9ab59cf_dump1.jpg.911bbc1c8f69f0e76fd02ce772f3868e.jpg

 

Jag har installerat xz via:


brew install xz

 

Funkar xz? Kan du köra exempelvis

tar -cvf testfil | xz -6e > testfil.pressad

där testfil ersätts med valfri fil?

Dela detta inlägg


Länk till inlägg
Dela på andra webbplatser
11 minuter sedan, Mattiasgbg säger:

Funkar xz? Kan du köra exempelvis


tar -cvf testfil | xz -6e > testfil.pressad

där testfil ersätts med valfri fil?

Jag förstår mig inte på detta, jag kastar in handduken. Men tack för att du och ni försöker. :) 

Dela detta inlägg


Länk till inlägg
Dela på andra webbplatser
1 minut sedan, Alix säger:

Jag förstår mig inte på detta, jag kastar in handduken. Men tack för att du och ni försöker. :) 

Fel i förra inlägget.

Kan du köra den raden i Terminal?

Dela detta inlägg


Länk till inlägg
Dela på andra webbplatser
Postad (redigerade)
14 minuter sedan, Mattiasgbg säger:

Fel i förra inlägget.

Kan du köra den raden i Terminal?

tar -cvf testfil | xz -6e > testfil.pressad
tar: no files or directories specified

Om jag kör följande:

tar -cvf /Users/user/Desktop/dump.jpg | xz -6e > /Users/user/Desktop/dump.jpg.pressad

får jag samma svar (tar: no files or directories specified), men dessutom en fil på skrivbordet enligt dumpen:

 

5ad07a823c02d_dump1.jpg.557223acc8de7bad51a2e587d72d79e8.jpg

 

”user” = mitt användarnamn som är något annat.

Redigerad av Alix

Dela detta inlägg


Länk till inlägg
Dela på andra webbplatser
17 minuter sedan, Alix säger:

tar -cvf testfil | xz -6e > testfil.pressad
tar: no files or directories specified

Om jag kör följande:


tar -cvf /Users/user/Desktop/dump.jpg | xz -6e > /Users/user/Desktop/dump.jpg.pressad

får jag samma svar (tar: no files or directories specified), men dessutom en fil på skrivbordet enligt dumpen:

 

5ad07a823c02d_dump1.jpg.557223acc8de7bad51a2e587d72d79e8.jpg

 

”user” = mitt användarnamn som är något annat.

Misstänker att det kan vara -f som spökar.

Ur "man tar":

Citat

-c      Create a new archive containing the specified items.

Citat

-f file
             Read the archive from or write the archive to the specified file.
             The filename can be - for standard input or standard output.

Citat

-v      Produce verbose output.  In create and extract modes, tar will
             list each file name as it is read from or written to the archive.
             In list mode, tar will produce output similar to that of ls(1).
             Additional -v options will provide additional detail.

Det borde funka utan -f eftersom det då blir samma som det jag körde utan xz.

Symbolen | av en sammankopplande avgränsade mellan två olika kommandon, så de olika sidorna behöver inte ha med varandra att göra, men då blir det inte särskilt meningsfullt.

 

Dela detta inlägg


Länk till inlägg
Dela på andra webbplatser

 

47 minuter sedan, Mattiasgbg säger:
1 timme sedan, Alix säger:

Tack, jag har installerat xz, men får det inte att fungera. Fattar inte hur den där tar-raden ska ändras, de ser så olika ut.


tar -cvf - --exclude={'.DS_Store','._*'} "$1" | xz -6e > "$1".tar.xz

antar jag, alltså utan ; i slutet. Samt att variabelnamnet "$1" anpassas.

Fast jag är lite osäker, @modEric, ska det vara - mellan -cvf och --exclude...?

Ja, det skall vara där. men det kanske kan funka utan - har aldrig provat. Det har väl med pipe'n att göra.


Gör några exempel nu...

 

Köra manuellt i Terminal:

 

OM det skule vara så att macOS fått en nyare tar (bsdtar), testa med den första - sen den andra. Båda funkar/gör samma sak. Anväder “~/Desktop“ som exempel.

# Testa med:
XZ_OPT=-e6 tar -cvJf Desktop.tar.xz "~/Desktop"

# annars prova med:
tar -cvf - "~/Desktop" | xz -6e > Desktop.tar.xz

 

För att göra det med Windowsvänligt:

# lägg till: --exclude={'.DS_Store','._*'} 
# De hamnar på olika ställen beroende på vilken man kör.

XZ_OPT=-e6 tar -cvJf Desktop.tar.xz --exclude={'.DS_Store','._*'} "~/Desktop"

tar -cvf - --exclude={'.DS_Store','._*'} "~/Desktop" | xz -6e > Desktop.tar.xz

 

- - -

 

Att använda som funktion (i t ex ~/.bash_profile)

function mkxz ()
{
	excl=`echo --exclude={'.DS_Store','._*'}`;
	tar -cvf - ${_excl} "$1" | xz -6e > "$1".tar.xz;
}

# anv:
# mkxz ~/Desktop
#
# ($1 = ~/Desktop)

Spara och starta om Terminalen så skall det funka sen. (det är bara den väre delen du använder)
 

- - -

 

Som eget litet skript:

#!/usr/bin/env bash

ERR=0;

_p=$(dirname "$1");
_f=$(basename "$1");
_excl=`echo --exclude={'.DS_S*','._*'}`;

if [ -e "$1" ]; then
    cd "${_p}";
    tar -cvf - ${_excl} "${_f}" | xz -6e > "${_f}".tar.xz;
    ERR=$?;
else
    echo -e "$(basename "$1"): Det gick inte att skapa '${_f}.tar.xz'\n";
    ERR=1;
fi

exit ${ERR};

mkxz.zip <-- ladda ner, eller --> spara det i rutan på skrivbordet som “mkxz” och installera den sen med:

cd ~/Desktop
sudo install -v -m755 -o0 -g0 mkxz /usr/local/bin

# anv:
# mkxz ~/Desktop

Tänkt på att funktionen hette samma namn som skriptet, byt namn på ena om du vill ha båda.

 

Och som installerat litet skript är detmycket enklare att köra både själv i terinalen &/el använda med Automator.

 

Dela detta inlägg


Länk till inlägg
Dela på andra webbplatser
1 timme sedan, Mattiasgbg säger:

tar -cvf - --exclude={'.DS_Store','._*'} "$1" | xz -6e > "$1".tar.xz

antar jag, alltså utan ; i slutet. Samt att variabelnamnet "$1" anpassas.

Fast jag är lite osäker, @modEric, ska det vara - mellan -cvf och --exclude...?

Strecket... Det är det som nomalt skulle ha vara namn på arkivet.

tar <options> NamnPåArkiv.tar.ext "DIR"

Men det hamnar ju på andra sidan pipe'n - så…

tar <options> - "DIR" | xz -6e > NamnPåArkiv.tar.xz

 

Dela detta inlägg


Länk till inlägg
Dela på andra webbplatser
Last login: Fri Apr 13 11:35:03 on ttys000
192:~ nissehult$ brew remove xz
Uninstalling /usr/local/Cellar/xz/5.2.3... (92 files, 1.4MB)
192:~ nissehult$ 

Tack ändå! :) 

Dela detta inlägg


Länk till inlägg
Dela på andra webbplatser
Postad (redigerade)
1 timme sedan, Alix säger:

5ad06f9ab59cf_dump1.jpg.911bbc1c8f69f0e76fd02ce772f3868e.jpg

Verkar som programmet inte är installerat där (xz: command not found).

När du har installerat xz (eller oavsett program). Kolla med:

which xz

# blir t ex:
$ which xz
/opt/local/bin/xz

Ibland, ett par enstaka gånger har det hänt att allt ser bra ut, men att den inte vill funka (ofta i samband med uppdateringar av ett program), så får man köra:

hash /sökväg/till/program

Men det verkar mer som att den inte hittar alls i sökvägen, så frågan är väl om Hombrew lägger den på något annat ställe då - och man får lägga till lite till PATH manuellt. Man kan alltid testa att starta om Terminal med, så laddar den in alla resurser vid programstart.

 

1 timme sedan, Alix säger:

Jag förstår mig inte på detta, jag kastar in handduken. Men tack för att du och ni försöker. :) 

16 minuter sedan, Alix säger:

Last login: Fri Apr 13 11:35:03 on ttys000
192:~ nissehult$ brew remove xz
Uninstalling /usr/local/Cellar/xz/5.2.3... (92 files, 1.4MB)
192:~ nissehult$ 

Tack ändå! :) 

 

Synd att du var så snabb med att ge upp. Hann inte se vad som blev fel innan du la av.

 

Eftersom du har Homebrew så tror jag nog du får xz installerat ändå, vad det lider. Ligger ofta med som dependency till andra program. :ThumbsUp:

Redigerad av modEric
  • Gilla 1

Dela detta inlägg


Länk till inlägg
Dela på andra webbplatser

Skapa ett konto eller logga in för att kommentera

Du måste vara medlem för att kunna kommentera

Skapa ett konto

Skapa ett nytt konto på vårt forum. Det är lätt!

Registrera ett nytt konto

Logga in

Redan medlem? Logga in här.

Logga in nu



×