Код IT Загрузка примера кода…

PHP main.php
<?php
/**
 * Создание резервной копии
 * Использование: php backup.php <путь_к_папке> <путь_для_резерва>
 */

$sourceDir = $argv[1] ?? '.';
$backupDir = $argv[2] ?? './backups';
$date = date('Y-m-d_H-i-s');
$backupName = "backup_{$date}.zip";
$backupPath = $backupDir . '/' . $backupName;

if (!is_dir($sourceDir)) {
    die("Ошибка: Исходная директория не найдена\n");
}

if (!is_dir($backupDir)) {
    mkdir($backupDir, 0755, true);
}

$zip = new ZipArchive();

if ($zip->open($backupPath, ZipArchive::CREATE | ZipArchive::OVERWRITE) !== TRUE) {
    die("Ошибка: Не удалось создать архив\n");
}

$iterator = new RecursiveIteratorIterator(
    new RecursiveDirectoryIterator($sourceDir, RecursiveDirectoryIterator::SKIP_DOTS),
    RecursiveIteratorIterator::SELF_FIRST
);

foreach ($iterator as $file) {
    $filePath = $file->getPathname();
    $relativePath = $file->getRelativePathname();

    if ($file->isDir()) {
        $zip->addEmptyDir($relativePath);
    } else {
        $zip->addFile($filePath, $relativePath);
    }
}

$zip->close();
echo "Резервная копия создана: {$backupPath}\n";
echo "Размер архива: " . filesize($backupPath) . " байт\n";
?>
<?php
/**
 * Создание резервной копии
 * Использование: php backup.php <путь_к_папке> <путь_для_резерва>
 */

$sourceDir = $argv[1] ?? '.';
$backupDir = $argv[2] ?? './backups';
$date = date('Y-m-d_H-i-s');
$backupName = "backup_{$date}.zip";
$backupPath = $backupDir . '/' . $backupName;

if (!is_dir($sourceDir)) {
    die("Ошибка: Исходная директория не найдена\n");
}

if (!is_dir($backupDir)) {
    mkdir($backupDir, 0755, true);
}

$zip = new ZipArchive();

if ($zip->open($backupPath, ZipArchive::CREATE | ZipArchive::OVERWRITE) !== TRUE) {
    die("Ошибка: Не удалось создать архив\n");
}

$iterator = new RecursiveIteratorIterator(
    new RecursiveDirectoryIterator($sourceDir, RecursiveDirectoryIterator::SKIP_DOTS),
    RecursiveIteratorIterator::SELF_FIRST
);

foreach ($iterator as $file) {
    $filePath = $file->getPathname();
    $relativePath = $file->getRelativePathname();

    if ($file->isDir()) {
        $zip->addEmptyDir($relativePath);
    } else {
        $zip->addFile($filePath, $relativePath);
    }
}

$zip->close();
echo "Резервная копия создана: {$backupPath}\n";
echo "Размер архива: " . filesize($backupPath) . " байт\n";
?>