Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #!/usr/bin/php -q
- <?
- $dir = '/w/f4v/';
- $s3dir = 's3://dolby/f4v/';
- if (is_file($dir.'.lock')) {
- echo "[s3sync] lock file found\r\n";
- exit;
- }
- touch($dir.'.lock');
- $d = dir($dir);
- while (false !== ($file = $d->read())) {
- if (!in_array($file, array('.','..','.last','.lock'))) {
- $local[$file] = filesize($dir.$file);
- }
- }
- $d->close();
- if (is_file($dir.'.last')) {
- if (json_encode($local, true) == file_get_contents($dir.'.last')) {
- echo "[s3sync] no changes found\r\n";
- unlink($dir.'.lock');
- exit;
- }
- }
- foreach (array_diff_assoc($local, s3ls($s3dir)) as $file=>$size) {
- exec("s3cmd put ${dir}${file} $s3dir", $result);
- preg_match("/\((.*?)\)/i", $result[0], $matches);
- echo "[PUT] $file {$matches[1]}\r\n";
- exec("s3cmd setacl --acl-public $s3dir${file}", $result);
- echo "[SETACL] $file {$result[1]}\r\n";
- }
- foreach (array_diff_assoc(s3ls($s3dir), $local) as $file=>$size) {
- exec("s3cmd del s3://dolby/f4v/$file", $result);
- echo "[DEL] ".end($result)."\r\n";
- }
- file_put_contents($dir.'.last', json_encode($local));
- unlink($dir.'.lock');
- echo "[S3SYNC] changes reflected\r\n";
- function s3ls($s3dir) {
- $files = array();
- exec('s3cmd ls '.$s3dir, $listing);
- foreach ($listing as $list) { list($date, $time, $size, $file) = preg_split("/ +/", $list, 4);
- if ($file != $s3dir) {
- $files[str_replace($s3dir, '', $file)] = $size;
- }
- }
- return $files;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement