25 ssh remote file-copy synchronization
使用Linux命令行,我使用scp命令,从某个目录复制所有文件和文件夹。但是,我不喜欢消耗带宽,因为复制我很少改变的东西,比如我的tiny_mce文件夹。复制所有内容但跳过一小部分文件夹的技巧是什么?
使用rsync --exclude是这里更明显的选择,但如果您真的只想发送一些文件或文件夹并有特定的内容要排除,您可以使用带有scp. 首先确保在 shell 中设置了正确的全局选项。对于 bash 运行shopt -s extglob和 zsh 使用setopt ksh_glob. 然后是这样的:
scp /path/to/folder/!(tiny_mce|other_folder|*.bak) user@host:target_path
Run Code Online (Sandbox Code Playgroud)
...将复制源文件夹中的所有内容,但与给定模式匹配的内容除外。显然,您可以在该部分发挥创意。
小智 7
rsync 是一个很好的解决方案,但如果您正在寻找替代方案:
假设我们有一个目录“test”,其中包含目录“foo, bar, baz”。在这些目录中有一堆不同的文件类型:
test
|____bar
| |____1.jpg
| |____1.png
| |____1.txt
| |____2.jpg
| |____2.png
| |____2.txt
|____baz
| |____1.avi
| |____2.avi
| |____3.png
|____foo
| |____test.blah
|____test.txt
Run Code Online (Sandbox Code Playgroud)
我们想复制除 PNG 之外的所有内容
scp $(find /location/of/test -type f ! -name "*.png") # -> Note the logical NOT!!
Run Code Online (Sandbox Code Playgroud)
在此示例中,该命令会将所有文件放入同一目标目录 - 这可能不是您想要的行为。
您可能想尝试的一个很棒的工具是“lftp”。
lftp sftp://etc.etc/
lftp> ls
--- remote listing ---
lftp> mirror -R -n local/ remote/
Run Code Online (Sandbox Code Playgroud)
您还可以通过 ssh 使用 RSync
rsync -avzp -e ssh /this/dir/ remoteuser@remotehost:/remote/dir/
Run Code Online (Sandbox Code Playgroud)
应该管用。
| 归档时间: |
|
| 查看次数: |
33022 次 |
| 最近记录: |