首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在capistrano3中为上传设置:linked_files和:linked_files

在capistrano3中为上传设置:linked_files和:linked_files
EN

Stack Overflow用户
提问于 2015-02-03 18:21:39
回答 1查看 757关注 0票数 3

我正在尝试使用capistrano3将文件和文件夹上传到我的服务器。我希望这个文件夹在所有版本之间共享。例如,我有一个名为media的文件夹,其中包含子目录和文件。我想把它放在Capistrano 3创建的共享目录下。

代码语言:javascript
运行
复制
set :linked_files, %w{config/database.yml}
set :linked_dirs, %w{bin log tmp/pids tmp/cache tmp/sockets vendor/bundle public/system}

有没有办法可以将媒体的所有文件和子目录上传到共享目录。

注意:基本上,我希望我的上传内容不受capistrano3的影响。有没有什么方法可以让我创建uploads文件夹的结构,并且它在我的capistrano部署中保持不变。提前谢谢。

EN

回答 1

Stack Overflow用户

发布于 2015-02-05 14:46:14

如果您希望在所有版本之间共享该文件夹,请将media目录添加到linked_dirs中。

set :linked_dirs, %w{bin log tmp/pids tmp/cache tmp/sockets vendor/bundle public/system media}

然后像这样写一个任务:

代码语言:javascript
运行
复制
namespace :deploy do
  desc 'upload media files'
  task :upload_media_files do
    remote_path, local_path = "#{fetch(:deploy_to)}/shared/media", '/your/local/media/path'
    on release_roles :app do
      upload!(local_path, remote_path, recursive: true)
    end
  end
end

after 'deploy:check', 'deploy:upload_media_files'

这是一个scp命令。根据source code,命令应该是:scp -t -r /remote/shared/media

如果不想覆盖现有文件,则应使用rsync

代码语言:javascript
运行
复制
namespace :deploy do
  desc 'upload media files'
  task :upload_media_files do
    remote_path, local_path = "#{fetch(:deploy_to)}/shared", '/your/local/media/path'
    on release_roles :app do |server|
      system("rsync -avzr #{local_path} #{fetch(:deployer)}@#{server.hostname}:#{remote_path}")
    end
  end
end

after 'deploy:check', 'deploy:upload_media_files'
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/28296492

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档