Advertisement
Guest User

Untitled

a guest
Jul 26th, 2017
62
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
PHP 1.58 KB | None | 0 0
  1. #!/usr/bin/php -q
  2. <?
  3.  
  4. $dir = '/w/f4v/';
  5. $s3dir = 's3://dolby/f4v/';
  6.  
  7. if (is_file($dir.'.lock')) {
  8.   echo "[s3sync] lock file found\r\n";
  9.   exit;
  10. }
  11.  
  12. touch($dir.'.lock');
  13.  
  14. $d = dir($dir);
  15.  
  16. while (false !== ($file = $d->read())) {
  17.   if (!in_array($file, array('.','..','.last','.lock'))) {
  18.     $local[$file] = filesize($dir.$file);
  19.   }
  20. }
  21.  
  22. $d->close();
  23.  
  24. if (is_file($dir.'.last')) {
  25.  
  26.   if (json_encode($local, true) == file_get_contents($dir.'.last')) {
  27.     echo "[s3sync] no changes found\r\n";
  28.     unlink($dir.'.lock');
  29.     exit;
  30.   }
  31.  
  32. }
  33.  
  34. foreach (array_diff_assoc($local, s3ls($s3dir)) as $file=>$size) {
  35.   exec("s3cmd put ${dir}${file} $s3dir", $result);
  36.   preg_match("/\((.*?)\)/i", $result[0], $matches);
  37.   echo "[PUT] $file {$matches[1]}\r\n";
  38.   exec("s3cmd setacl --acl-public $s3dir${file}", $result);
  39.   echo "[SETACL] $file {$result[1]}\r\n";
  40. }
  41.  
  42. foreach (array_diff_assoc(s3ls($s3dir), $local) as $file=>$size) {
  43.   exec("s3cmd del s3://dolby/f4v/$file", $result);
  44.   echo "[DEL] ".end($result)."\r\n";
  45. }
  46.  
  47. file_put_contents($dir.'.last', json_encode($local));
  48. unlink($dir.'.lock');
  49. echo "[S3SYNC] changes reflected\r\n";
  50.  
  51. function s3ls($s3dir) {
  52.  
  53.   $files = array();
  54.  
  55.   exec('s3cmd ls '.$s3dir, $listing);
  56.  
  57.   foreach ($listing as $list) {                                                                                                                                  list($date, $time, $size, $file) = preg_split("/ +/", $list, 4);
  58.     if ($file != $s3dir) {
  59.       $files[str_replace($s3dir, '', $file)] = $size;
  60.     }
  61.   }
  62.  
  63.   return $files;
  64.  
  65. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement