ctrl+shift+p filters: :st2 :st3 :win :osx :linux
浏览

Rsync SSH

davidolrik ST3

保持远程目录与本地项目同步。

标签 sync

详细信息

安装量

  • 总数 8K
  • Win 3K
  • Mac 3K
  • Linux 2K
Aug 6 Aug 5 Aug 4 Aug 3 Aug 2 Aug 1 Jul 31 Jul 30 Jul 29 Jul 28 Jul 27 Jul 26 Jul 25 Jul 24 Jul 23 Jul 22 Jul 21 Jul 20 Jul 19 Jul 18 Jul 17 Jul 16 Jul 15 Jul 14 Jul 13 Jul 12 Jul 11 Jul 10 Jul 9 Jul 8 Jul 7 Jul 6 Jul 5 Jul 4 Jul 3 Jul 2 Jul 1 Jun 30 Jun 29 Jun 28 Jun 27 Jun 26 Jun 25 Jun 24 Jun 23
Windows 0 1 0 0 2 1 1 2 0 0 0 0 0 0 1 1 0 0 1 0 0 1 0 0 1 0 0 0 2 0 0 1 0 0 0 0 2 0 0 0 0 0 0 0 0
Mac 1 1 0 0 0 0 1 0 3 0 0 0 1 0 1 0 1 2 1 1 0 0 0 0 1 0 0 1 1 0 3 0 2 1 1 0 0 0 2 0 0 0 0 0 0
Linux 0 0 0 0 0 0 0 0 3 0 0 0 0 0 1 0 3 1 0 0 0 1 0 0 1 0 1 0 0 0 0 0 0 1 0 1 6 0 1 1 0 0 1 1 0

Readme

源代码
raw.githubusercontent.com

Sublime Rsync SSH

保持远程目录与本地项目文件夹同步。

描述

此插件允许您使用rsync和ssh将项目文件夹同步到一个或多个远程服务器。

术语

  • 远程是指定为同步的本地图标文件夹。
  • 目的地是在特定服务器上的特定用户路径。
  • 远程可以有一个或多个目的地

特点

  • 本地编辑,远程工作
  • 将一个或多个项目文件夹上传到一个或多个远程服务器。
  • 每个项目文件夹可以多个远程,每个远程可以有多个目的地
  • 同步整个项目或仅同步单个远程或目的
  • 仅保存单个文件时仅同步正在保存的文件。
  • 自动为项目中的所有文件夹生成初始rsync-ssh配置。
  • 排除文件,可以是整个项目,单个文件夹或单个远程。
  • 选择性同步:仅同步项目文件夹的远程服务器部分。
  • 在同步前后在远程主机上运行命令的钩子。
  • 启用/禁用远程。
  • 解析rsync参数以进行高级使用(或尚未包含的功能)
  • 详细的控制台输出,以便您知道哪些东西被同步到哪里。

要求

  • 您必须在本地和远程服务器上同时安装sshrsync
  • 您必须有一个允许您无密码登录的ssh密钥。如果您在密钥上设置有密码,则必须使用ssh-agent。在OS X上,您需要使用ssh-add -K将您的密钥添加到Keychain,一旦完成,OS X将使用ssh-agent查询Keychain以获取您的密码。
  • 在远程服务器上,您必须将您的SSH公钥添加到~/.ssh/authorized_keys

有关创建和使用SSH密钥的更多信息,请参阅这篇指南

用法

注意您可以通过查看控制台上的输出来查看插件所做的一切。

初始化配置

首先创建一个Sublime项目,您可以通过添加一个或多个文件夹并保存您的项目来完成此操作。

然后转到项目菜单,选择Rsync SSH,然后选择初始化设置,这将为settings添加rsync_ssh块并使用一些合理的默认值,然后为您打开首选项进行编辑。

请注意,--delete选项将破坏您在remote_path中指定的目录 - 为了方便起见,我已添加--dry-run,以便您在运行实时的rsync之前测试您的配置。

示例.sublime-project文件

请注意,.sublime-project是一个JSON文件,因此不支持注释,幸运的是,Sublime Text使用了相当宽松的解析器,支持//注释。下面的注释只是为了记录各个部分。

当您通过初始化设置初始化项目时,插件将添加rsync_ssh配置到您的项目文件中。

{
    "folders":
    [
        {
            "follow_symlinks": true,
            "path": "my-project-folder"
        }
    ],
    "settings":
    {
        // This is the block the plugin adds to your project file
        "rsync_ssh":
        {
            // To use non-standard ssh specify the path here ...
            "ssh_binary": "/usr/local/bin/ssh",
            // ... and additional arguments here
            "ssh_args": ["-F", "~/another/config/file"],

            // To disable sync on save set 'sync_on_save' to false
            "sync_on_save": true,

            // To always sync all files when saving (not just the saved file)
            // set `sync_all_on_save` to true
            "sync_all_on_save": true,

            // Rsync options
            "options":
            [
                "--dry-run",
                "--delete",
                // Override how we handle permissions, useful for platforms that does not support Unix permissions.
                // Here we tell rsync to use the umask on the destination to set the permissions
                "--no-perms", "--chmod=ugo=rwX"
            ],
            // Stuff we do not want rsync to copy
            "excludes":
            [
                ".git*",
                "_build",
                "blib",
                "Build"
            ],
            // Servers we want to sync to
            "remotes":
            {
                // Each folder from the project will be added here
                "my-project-folder":
                [
                    {
                        // You can disable any destination by setting this value to 0
                        "enabled": 1,
                        // Stuff we do not want rsync to copy, but just for this destination
                        "excludes":
                        [
                        ],
                        // ssh options
                        "remote_host": "my-server.my-domain.tld",
                        "remote_path": "/home/you/Projects/my-project",
                        "remote_port": 22,
                        "remote_user": "you",
                        // Run commands before and after rsync
                        "remote_pre_command": "",
                        "remote_post_command": ""
                    }
                ],
                // Syncing a single subfolder is also supported
                "my-project-folder/subfolder":
                [
                    {
                        // You can disable any destination by setting this value to 0
                        "enabled": 0,
                        // Stuff we do not want rsync to copy, but just for this destination
                        "excludes":
                        [
                        ],
                        // ssh options
                        "remote_host": "my-server.my-domain.tld",
                        "remote_path": "/home/you/Projects/my-subfolder-target",
                        "remote_port": 22,
                        "remote_user": "you",
                        // Run commands before and after rsync
                        "remote_pre_command": "",
                        "remote_post_command": ""
                    }
                ]
            }
        }
    }
}

同步单个文件

正常保存文件即可,因为这会触发保存事件,使此插件将文件同步到所有启用的远程服务器。

同步特定的远程或目标

按⌘⇧F11选择特定的远程或目标进行同步。当选择特定的目标时,将覆盖enabled标志,并始终同步文件夹。如果您选择远程服务器,然后选择所有目标,则会尊重enabled标志。如果您选择只有一个目标的远程服务器,则会立即开始同步,并将覆盖enabled标志。

同步完整项目

按⌘⇧F12将所有文件夹同步到所有启用的远程服务器。 - 注意您至少必须这样做一次,以便在远程服务器上创建项目文件夹。

安装

您可以通过直接克隆此项目或通过出色的Package Control插件安装此插件。按⌘⇧P并输入Package Control: Install Package,然后选择它,然后输入包名rsync-ssh并选择它。

要在Windows上使用此插件,您必须首先安装Cygwin

常见问题解答

当我尝试同步时,没有任何反应

您可能忘记从项目配置文件中的rsync选项中删除--dry-run

我在Windows上,我该如何在目标上获得合理的权限?

由于Windows没有对Unix权限的本机支持,您不能依赖“保留权限”的默认同步模式。相反,您可以禁用权限同步使用--no-perms,然后使用--chmod=ugo=rwX使rsync使用目标上的umask来确定文件应该具有哪些权限。当您初始化rsync-ssh配置时,这将被自动添加到配置中,如上面示例所示。

待办事项

  • remotes重命名为folders(称它们为远程服务器有点愚蠢)。

许可权

© 2013-2015 David Olrik <[email protected]>.

这是免费软件。它许可在Creative Commons Attribution-ShareAlike 3.0 Unported License下。您可以在自己的工作中自由使用此软件包。但是,如果您更改和/或重新分配它,请以某种方式向我归属,并以此类许可证或类似许可证分配您的作品。