<?php
/**
* Backs up files specified by CLI arguments for validation.
* Handles edge cases like missing arguments or invalid file paths.
*
* Usage: php backup_files.php <file1> <file2> ... <backup_dir>
*/
if (count($argv) < 3) {
echo "Usage: php backup_files.php <file1> <file2> ... <backup_dir>\n";
exit(1); // Exit with an error code
}
$backupDir = $argv[count($argv) - 1]; // Last argument is the backup directory
if (!is_dir($backupDir)) {
if (!mkdir($backupDir, 0777, true)) {
echo "Error: Could not create backup directory: $backupDir\n";
exit(1);
}
}
$filesToBackup = array_slice($argv, 1, count($argv) - 2); // Files to backup (all but the last argument)
foreach ($filesToBackup as $file) {
if (!file_exists($file)) {
echo "Warning: File not found: $file\n";
continue; // Skip to the next file
}
$backupFile = $backupDir . '/' . basename($file); // Backup file name
if (file_put_contents($backupFile, file_get_contents($file)) === false) {
echo "Error: Could not backup file: $file\n";
} else {
echo "Backed up: $file to $backupFile\n";
}
}
echo "Backup process completed.\n";
?>
Add your comment