如何使用PHP将文件从服务器复制到Dropbox?

mal*_*lls 6 php dropbox-php

我想我可能已经找到了一个PHP程序,用于将文件从特定文件夹上传到我的Dropbox帐户.完整的解决方案可以在这里找到.

代码似乎有效,因为正在上传文件和文件夹.但是,我不希望事先压缩我服务器上的文件:我想要复制包含文件和文件夹的所有文件.

如何修改代码呢?我想要的只是将一个名为uploads的特定目录从我的服务器复制到dropbox.修改代码后,我设法得到了这段代码:

    <?php

    // Set the timezone so filenames are correct
    date_default_timezone_set('Europe/London');

    // Dropbox username/password
    $dropbox_email='dropbox@dropbox.com';
    $dropbox_pass='password';


    // Filenames for backup files
    $backup_files = "files_" . date("Y.m.d-h.i.s_l") . '.zip';


    // File to backup
    $siteroot = "/site/home/public_html/website/parent/child/uploads/";


    // Backup all files in public_html apart from the gz
    system("zip -r $backup_files $siteroot");


    include("DropboxUploader.php");

    $uploader = new DropboxUploader($dropbox_email, $dropbox_pass);
    $uploader->upload($backup_files,'Backup/Files/');

    system("rm $backup_files");

    ?>
Run Code Online (Sandbox Code Playgroud)

实际解决方案 特别感谢Alireza Noori,halfer和其他所有人.

<?php

// Set the timezone so filenames are correct
date_default_timezone_set('Europe/London');

// Backup all files in public_html apart from the gz
$siteroot = "/path/to/backup";

$dropbox_email='dropbox@email';  //Dropbox username
$dropbox_pass='pass';   // Dropbox password

include("DropboxUploader.php");

$uploader = new DropboxUploader($dropbox_email, $dropbox_pass);

function FolderToDropbox($dir, $dropbox_link){    
    $dropbox_folder = 'FolderInDropboxRoot/';
    $files = scandir($dir);
    foreach($files as $item){
        if($item != '.' && $item != '..'){
            if(is_dir($dir.'/'.$item)) FolderToDropbox($dir.'/'.$item,$dropbox_link);
            else if(is_file($dir.'/'.$item)) {
                $clean_dir = str_replace("/path/to/backup", "", $dir);
                $dropbox_link->upload($dir.'/'.$item,$dropbox_folder.$clean_dir.'/');  
            } 
        }
    }
}

FolderToDropbox($siteroot,$uploader);

?>
Run Code Online (Sandbox Code Playgroud)

Ali*_*ori 3

@halfer 的建议是这样的(我刚刚根据他的想法修改了你的潜在解决方案),所以他应该相信:

<?php

function uploadx($dirtocopy, $dropboxdir, $uploader){
    if ($handle = opendir($dirtocopy)) {
        while (false !== ($entry = readdir($handle))) {
            if ($entry != "." && $entry != "..") {

                if(is_dir($entry)){
                    uploadx($dirtocopy.$entry.'/', $dropboxdir.$entry.'/', $uploader);
                } else {
                    $uploader->upload($dirtocopy.$entry, $dropboxdir.$entry);
                }

            }
        }
        closedir($handle);
    }
}

// Dropbox username/password
$dropbox_email='dropbox@dropbox.com';
$dropbox_pass='password';

// File to backup
$siteroot = "./";

include("DropboxUploader.php");

$uploader = new DropboxUploader($dropbox_email, $dropbox_pass);

uploadx($siteroot, 'Backup/Files/', $uploader);

?>
Run Code Online (Sandbox Code Playgroud)

顺便说一句,上面的功能来自这里:How to backup files from a certain directory to Dropbox using PHP only?

  • 如果要重新创建文件和文件夹,则需要自己处理递归。如果到那时没有其他人这样做,我将在明天发布代码。现在是凌晨 5 点,我太困了;) 好吗? (2认同)