Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [PHP]Spakowanie folderu (komenda linuksowa)
RSVx
post
Post #1





Grupa: Zarejestrowani
Postów: 62
Pomógł: 0
Dołączył: 26.07.2008

Ostrzeżenie: (10%)
X----


  1. <?php
  2. exec("tar -zcvf abc.zip abc.txt");
  3. ?>


W ten sposób tworzę archiwum z jednego pliku txt. W jaki sposób mam spakować folder w którym są pliki i foldery. Nie znam komend linuksa (szukałem, ale znalazłem właśnie tylko spakowanie pliku), a właśnie tutaj mogę je użyć. Bardzo mi na tym zależy.

DZIĘKI
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 14)
Aquarius
post
Post #2





Grupa: Zarejestrowani
Postów: 36
Pomógł: 1
Dołączył: 18.10.2008

Ostrzeżenie: (0%)
-----


z tego co dobrze pamiętam to:

Kod
tar cf




tak się składa że akurat miałem pod ręką jedną taka funkcję...


  1. <?php
  2. function downloadArchive($down) {
  3.  global $cfg;
  4.  $current = "";
  5.  
  6.  if (tfb_isValidPath($down)) {
  7.      // This prevents the script from getting killed off when running lengthy tar jobs.
  8.      @ini_set("max_execution_time", 3600);
  9.      $down = $cfg["path"].$down;
  10.      $arTemp = explode("/", $down);
  11.      if (count($arTemp) > 1) {
  12.          array_pop($arTemp);
  13.          $current = implode("/", $arTemp);
  14.      }
  15.      // Find out if we're really trying to access a file within the
  16.      // proper directory structure. Sadly, this way requires that $cfg["path"]
  17.      // is a REAL path, not a symlinked one. Also check if $cfg["path"] is part
  18.      // of the REAL path.
  19.      if (is_dir($down)) {
  20.          $sendname = basename($down);
  21.          switch ($cfg["package_type"]) {
  22.              Case "tar":
  23.                  $command = "tar cf - \"".addslashes($sendname)."\"";
  24.                  break;
  25.              Case "zip":
  26.                  $command = "zip -0r - \"".addslashes($sendname)."\"";
  27.                  break;
  28.              default:
  29.                  $cfg["package_type"] = "tar";
  30.                  $command = "tar cf - \"".addslashes($sendname)."\"";
  31.                  break;
  32.          }
  33. ?>





może się przyda winksmiley.jpg

Ten post edytował Aquarius 18.10.2008, 16:28:18
Go to the top of the page
+Quote Post
HellRider
post
Post #3





Grupa: Zarejestrowani
Postów: 57
Pomógł: 7
Dołączył: 12.09.2008
Skąd: localhost

Ostrzeżenie: (0%)
-----


Google.pl -> tar linux

Drugi wynik http://lowfatlinux.com/linux-tar.html

Ehh, z przykładami, z flagami, jak na tacy. Osobiście wierzę, że szybciej google poda odpowiedź niż forum smile.gif

Ten post edytował HellRider 18.10.2008, 16:27:05
Go to the top of the page
+Quote Post
RSVx
post
Post #4





Grupa: Zarejestrowani
Postów: 62
Pomógł: 0
Dołączył: 26.07.2008

Ostrzeżenie: (10%)
X----


Mnie akurat google zawodzi, więc zostaje tylko to forum smile.gif

  1. <?php
  2. exec("tar -xvf  files/foty.zip");
  3. ?>


Ten kawałek kody zgodnie z http://lowfatlinux.com/linux-tar.html powinien mi rozpakować archiwum, ale tego nie robi. Wie ktoś może czemu??

Proszę bardzo o pomoc, ostatni RAZ, please....
Go to the top of the page
+Quote Post
webdice
post
Post #5


Developer


Grupa: Moderatorzy
Postów: 3 045
Pomógł: 290
Dołączył: 20.01.2007




Z tego co ja się orientuje, to tar nie obsługuje formatu zip. Skorzystaj z unzip (o ile masz zainstalowane).
Go to the top of the page
+Quote Post
RSVx
post
Post #6





Grupa: Zarejestrowani
Postów: 62
Pomógł: 0
Dołączył: 26.07.2008

Ostrzeżenie: (10%)
X----


Pewnie mam zainstalowane, ale z jakimi parametrami go mam wywołać??
Znalazłem tą stronkę http://linux.about.com/od/commands/l/blcmdl1_unzip.htm , ale po angielsku. Nie bardzo rozumiem. Jeśli mógłbyś napisać z jakimi parametrami ... TO WIELKIE DZIĘX
Go to the top of the page
+Quote Post
Aquarius
post
Post #7





Grupa: Zarejestrowani
Postów: 36
Pomógł: 1
Dołączył: 18.10.2008

Ostrzeżenie: (0%)
-----


a podałem ci kodzik z funkcją - całkiem fajną z resztą smile.gif
była tam komenda na pakowanie w formacie zip:

Kod
zip -0r
Go to the top of the page
+Quote Post
michalkjp
post
Post #8





Grupa: Zarejestrowani
Postów: 182
Pomógł: 14
Dołączył: 20.09.2008

Ostrzeżenie: (0%)
-----


RSVx

Ponieważ nie używałeś Linuksa, to zabierasz się do problemu trochę ze złej strony. Jeśli chcesz spakować pojedynczy plik

gzip -9 plik.txt (zamiast -9 możesz dać mniejsze stopnie kompresji, będzie szybciej)

dostaniesz plik.txt.gz

Gdy chcesz spakować katalog musisz napisać

tar cvf nazwa_archiwum.tar katalog

następnie go kompresujesz gzip'em jak w pierwszym przykładzie. Nie nadawaj rozszerzenia zip, bo możesz zmylić jakiś głupszy program do rozpakowywania.

Zamiast gzip możesz użyć innych programów np. bzip2, zip lub rar.

W każdym bądź razie musisz zapamiętać – nie da się spakować katalogu tak jak pojedynczego pliku – najpierw archiwum tar'em a następnie kompresja.
Go to the top of the page
+Quote Post
RSVx
post
Post #9





Grupa: Zarejestrowani
Postów: 62
Pomógł: 0
Dołączył: 26.07.2008

Ostrzeżenie: (10%)
X----


Wielkie Dzięki Aquarius (ale teraz chcę rozpakować)

Ej Webmasterzy,Webmasterzy :/, nie czytacie mnie w ogóle... JA CHCĘ TERAZ ROZPAKOWAĆ PLIK files/foty.zip, (bo już udało mi się go spakować dzięki waszej pomocy). I teraz jak unzip'em to wypakować questionmark.gif

Ten post edytował RSVx 18.10.2008, 20:27:50
Go to the top of the page
+Quote Post
michalkjp
post
Post #10





Grupa: Zarejestrowani
Postów: 182
Pomógł: 14
Dołączył: 20.09.2008

Ostrzeżenie: (0%)
-----


A czym pakowałeś, bo już się pogubiłem?

Jeśli zip'em, to unzip będzie najlepszy.

Jeśli jest tak naprawdę tar.gz (a ty dałeś .zip), to tar zxvf powinno działać.

To, że napisałem dłuższą instrukcję, to nie dlatego, że nie czytałem, tylko dlatego, że widziałem "tar zcvf plik.zip" smile.gif

(gzip to nie zip)
Go to the top of the page
+Quote Post
RSVx
post
Post #11





Grupa: Zarejestrowani
Postów: 62
Pomógł: 0
Dołączył: 26.07.2008

Ostrzeżenie: (10%)
X----


  1. <?php
  2. exec("tar -cf abc.zip abc/");
  3. ?>

Tak spakowałem... WIN RAR mi to otworzy. Teraz spakowałem folder foty win rar'em do zip'a, przeslalem to na server i chcę to rozpakować, ale
  1. <?php
  2. exec("tar -xvf  files/foty.zip");
  3. ?>

powyższa instrukcja mi nie dzila

Ten post edytował RSVx 18.10.2008, 20:38:59
Go to the top of the page
+Quote Post
Aquarius
post
Post #12





Grupa: Zarejestrowani
Postów: 36
Pomógł: 1
Dołączył: 18.10.2008

Ostrzeżenie: (0%)
-----


no ja tak samo myślałem że nadal chcesz pakować winksmiley.jpg

ja proponowałbym ci tak:

Kod
unzip -o nazwa.archiwum.zip -d katalog_docelowy


-o - spowoduje rozpakowanie i nadpisanie plików (jeżeli takowe istnieją już)
-d - możesz sprecyzować gdzie ma rozpakować

Ten post edytował Aquarius 18.10.2008, 20:42:07
Go to the top of the page
+Quote Post
RSVx
post
Post #13





Grupa: Zarejestrowani
Postów: 62
Pomógł: 0
Dołączył: 26.07.2008

Ostrzeżenie: (10%)
X----


DZIĘKI WSZYSTKIM... (szkoda że mi tylko nie działa... ale może sobie jakoś poradzę). Pewnie Admin lub Moderator mnie opieprzy że pisze taki post, więc wyjaśnię dlaczego to robię:

1) Mógłbym kliknąć na 'Pomógł', ale niestety mi nie działa więc tego nie zrobię biggrin.gif
2) Zajęło wam to trochę czasu więc dlatego ma PISZE BIG THX

POZDRO
Go to the top of the page
+Quote Post
michalkjp
post
Post #14





Grupa: Zarejestrowani
Postów: 182
Pomógł: 14
Dołączył: 20.09.2008

Ostrzeżenie: (0%)
-----


RSVx




Eh... Źle mnie zrozumiałeś

1 ) Nie rób tar -cf abc.zip abc/ bo nie dostajesz pliku spakowanego zip'em tylko archiwum .tar – to, że WinRAR to otwiera dowodzi tylko tego, że należy do grupy mądrzejszych programów nie patrzących się na rozszerzenie, tylko sprawdza nagłówek pliku.

2) Aquarius podał Ci polecenie, którym możesz rozpakować plik zip, który wysłałeś na serwer.

Krótki manual v2:

Kompresja pliku - gzip

gzip -{1..9 – poziom kompresji} plik.txt

otrzymujesz plik.txt.gz (to nie jest zip)

Kompresja pliku - bzip2

bzip2 -{1..9 – poziom kompresji} plik.txt

otrzymujesz plik.txt.bz2

Dekompresja pliku – gzip

gzip -d plik.txt.gz

otrzymujesz plik.txt

Dekompresja pliku – bzip2

bzip2 -d plik.txt.bz2

otrzymujesz plik.txt

Archiwizacja katalogu – tar + gzip

tar cvf katalog.tar katalog/

gzip -{1..9 – poziom kompresji} katalog.tar

otrzymujesz plik katalog.tar.gz

Archiwizacja katalogu – tar + bzip2

tar cvf katalog.tar katalog/

bzip2 -{1..9 – poziom kompresji} katalog.tar

otrzymujesz plik katalog.tar.bz2

Dekompresja archiwum tar.gz

tar zxvf katalog.tar.gz

Dekompresja archiwum tar.bz2

tar xjvf katalog.tar.bz2




Proponuję stosować powyższe na serwerach uniksowych, bo tam zawsze jest gzip i bzip2 a zip'a i unzip'a może nie być.
Go to the top of the page
+Quote Post
Aquarius
post
Post #15





Grupa: Zarejestrowani
Postów: 36
Pomógł: 1
Dołączył: 18.10.2008

Ostrzeżenie: (0%)
-----


właśnie tak jak michalkjp napisał
jak spakujesz TAR'em plik/folder z roszerzeniem .zip to w rzeczywistości to nie będzie plik w formacie ZIP, będzie miał on tylko rozszerzenie .zip
jeżeli chcesz otrzymać format ZIP - musisz stosować się do komend ZIPa, tak więc nie-pakować TARem

ja akurat problemu nie mam, to czego nie ma na serwerze w standardzie - to sobie doinstaluję
ale ty powinieneś stosować komend tar, gzip i bzip2
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 22.08.2025 - 08:12