Создать архив

Armus

Новичок
Репутация
10 / 955
Залил шелл на сервер где лежит игра, но 1 проблема, как упаковать содержимое папки в архив? Как то раньше создавал архив такой командой tar cf myarch.tar mydir но после скачки архива мне архиватор на него ругался, вообщем выручайте)
 
Все правильно ты создавал, надо было просто подождать, иногда архивы могут быть и по 5Gb.

Вот может пригодится.
Код:
<?php
/***********************************************************
 *   Title:  Classic-TAR based backup script v0.0.1-dev
  **********************************************************/

Class Tar_by_Vladson {
    var $tar_file;
    var $fp;
    function Tar_by_Vladson($tar_file='backup.tar') {
        $this->tar_file = $tar_file;
        $this->fp = fopen($this->tar_file, "wb");
        $tree = $this->build_tree();
        $this->process_tree($tree);
        fputs($this->fp, pack("a512", ""));
        fclose($this->fp);
    }
    function build_tree($dir='.'){
        $handle = opendir($dir);
        while(false !== ($readdir = readdir($handle))){
            if($readdir != '.' && $readdir != '..'){
                $path = $dir.'/'.$readdir;
                if (is_file($path)) {
                    $output[] = substr($path, 2, strlen($path));
                } elseif (is_dir($path)) {
                    $output[] = substr($path, 2, strlen($path)).'/';
                    $output = array_merge($output, $this->build_tree($path));
                }
            }
        }
        closedir($handle);
        return $output;
    }
    function process_tree($tree) {
        foreach( $tree as $pathfile ) {
            if (substr($pathfile, -1, 1) == '/') {
                fputs($this->fp, $this->build_header($pathfile));
            } elseif ($pathfile != $this->tar_file) {
                $filesize = filesize($pathfile);
                $block_len = 512*ceil($filesize/512)-$filesize;
                fputs($this->fp, $this->build_header($pathfile));
                fputs($this->fp, file_get_contents($pathfile));
                fputs($this->fp, pack("a".$block_len, ""));
            }
        }
        return true;
    }
    function build_header($pathfile) {
        if ( strlen($pathfile) > 99 ) die('Error');
        $info = stat($pathfile);
        if ( is_dir($pathfile) ) $info[7] = 0;
        $header = pack("a100a8a8a8a12A12a8a1a100a255",
            $pathfile,
            sprintf("%6s ", decoct($info[2])),
            sprintf("%6s ", decoct($info[4])),
            sprintf("%6s ", decoct($info[5])),
            sprintf("%11s ",decoct($info[7])),
            sprintf("%11s", decoct($info[9])),
            sprintf("%8s", " "),
            (is_dir($pathfile) ? "5" : "0"),
            "",
            ""
            );
        clearstatcache();
        $checksum = 0;
        for ($i=0; $i<512; $i++) {
            $checksum += ord(substr($header,$i,1));
        }
        $checksum_data = pack(
            "a8", sprintf("%6s ", decoct($checksum))
            );
        for ($i=0, $j=148; $i<7; $i++, $j++)
            $header[$j] = $checksum_data[$i];
        return $header;
    }
}

header('Content-type: text/plain');
$start_time = array_sum(explode(chr(32), microtime()));
$tar = & new Tar_by_Vladson();
$finish_time = array_sum(explode(chr(32), microtime()));
printf("The time taken: %f seconds", ($finish_time - $start_time));
?>

Еще есть auae.php, в гугле глянь.
 
Спасибо, разберусь как на локалке поставить и сюда выложу, а то там столько г*вн*, что трудно разобраться
 
 
Проблемы со скачкой архива)) размер 1гб, а инет гамно, скачать смогу или в начале месяца или друг на выходных скачает, разберусь выложу вам на обозрение)
 
залей на turbobit.net там есть функция скачка с удаленного сервера, а то на хосте с игрой могут удалить.
Или кидай мне в пм, скачаю тебе.
 
А у кого скорость интернета шикарная? кто мог бы быстренько скачать и перезалить? а то действительно вдруг удалят)) я на всяк случай 2 шелла залил, но лишний раз палится не охота)
 
ОК, насчет гавна согласен, там у них на сервере еще другой архив с игрой был, 100мб разбираюсь с ним, но гавна та тоже море) половина игры на перле, половина на пхп, разберусь тоже выложу
 

Похожие темы

Сверху