站内公告:

我们的虚拟社区正式开通了

Main Menu

最新帖子

#1
在工作中,会发现gunicorn启动的web服务,无论怎么使用kill -9 进程号都是无法杀死gunicorn,经过我一番百度和谷歌,发现想要删除gunicorn进程其实很简单。

1. 寻找masterpid
通过执行如下命令,可以获取Gunicorn进程树:
pstree -ap|grep gunicorn
得到如下的结果。

|-grep,6194 --col gunicorn
  |   `-gunicorn,30080 /usr/local/bin/gunicorn collect:app -c collect_gunicorn.py
  |       |-gunicorn,4413 /usr/local/bin/gunicorn collect:app -c collect_gunicorn.py
  |       |-gunicorn,8030 /usr/local/bin/gunicorn collect:app -c collect_gunicorn.py
  |       |-gunicorn,8135 /usr/local/bin/gunicorn collect:app -c collect_gunicorn.py
  |       |-gunicorn,8137 /usr/local/bin/gunicorn collect:app -c collect_gunicorn.py
  |       |-gunicorn,11532 /usr/local/bin/gunicorn collect:app -c collect_gunicorn.py
  |       |-gunicorn,13460 /usr/local/bin/gunicorn collect:app -c collect_gunicorn.py
  |       |-gunicorn,19728 /usr/local/bin/gunicorn collect:app -c collect_gunicorn.py
  |       |-gunicorn,23585 /usr/local/bin/gunicorn collect:app -c collect_gunicorn.py
  |       |-gunicorn,23825 /usr/local/bin/gunicorn collect:app -c collect_gunicorn.py
  |       |-gunicorn,27921 /usr/local/bin/gunicorn collect:app -c collect_gunicorn.py
  |       |-gunicorn,28899 /usr/local/bin/gunicorn collect:app -c collect_gunicorn.py
  |       |-gunicorn,28900 /usr/local/bin/gunicorn collect:app -c collect_gunicorn.py
  |       |-gunicorn,28901 /usr/local/bin/gunicorn collect:app -c collect_gunicorn.py
  |       |-gunicorn,35637 /usr/local/bin/gunicorn collect:app -c collect_gunicorn.py
  |       |-gunicorn,36963 /usr/local/bin/gunicorn collect:app -c collect_gunicorn.py
  |       |-gunicorn,43074 /usr/local/bin/gunicorn collect:app -c collect_gunicorn.py
  |       |-gunicorn,43118 /usr/local/bin/gunicorn collect:app -c collect_gunicorn.py
  |       |-gunicorn,43232 /usr/local/bin/gunicorn collect:app -c collect_gunicorn.py
  |       |-gunicorn,43307 /usr/local/bin/gunicorn collect:app -c collect_gunicorn.py
  |       |-gunicorn,43308 /usr/local/bin/gunicorn collect:app -c collect_gunicorn.py
  |       |-gunicorn,44018 /usr/local/bin/gunicorn collect:app -c collect_gunicorn.py
  |       |-gunicorn,46996 /usr/local/bin/gunicorn collect:app -c collect_gunicorn.py
  |       |-gunicorn,47000 /usr/local/bin/gunicorn collect:app -c collect_gunicorn.py
  |       `-gunicorn,47650 /usr/local/bin/gunicorn collect:app -c collect_gunicorn.py
很显然,30080就是Gunicorn的主进程。

2. 重启Gunicorn任务
按照官方的推荐方法,很容易执行命令:

kill -HUP 30080
执行上述命令后,再次执行"pstree -ap|grep gunicorn",我们很容易发现,除了主进程,其他的Gunicorn进程都已经销毁,并新建了进程(进程ID发生了变化)。

3. 退出Gunicorn任务
kill -9 30080或者
killall -9 gunicorn
#2
代码管理-Git / git-忽略已提交的文件或目录
最后发布 jvip_chen - 2022-06-24 09:09 上午
1.先把项目备份,以防万一。

2.从版本库中rm文件或目录

rm文件

git rm --cached file_name //从版本库中rm文件,working dicrectory中仍然保留(本地文件还存在, 只是不希望这个文件被版本控制。)
rm目录

git rm -r --cached directory_name //删除目录下所有文件包括子目录
3.在.gitignore中添加要忽略的文件

4.把修改的文件commit并且push到服务端

5.从git上重新拉取这个项目。
#3
Redis数据库 / python 连接 redis cluster 集群
最后发布 jvip_chen - 2022-06-21 09:52 下午
一. redis集群模式有多种, cluster模式只是其中的一种实现方式, 其原理请自行谷歌或者百度, 这里只举例如何使用Python操作 redis cluster 集群

二. python 连接 redis cluster 集群

  第三方库:

    redis-py-cluster: 最近还在维护

    rediscluster: 似乎很久没有更新了

pip install redis-py-cluster
or
pip install rediscluster
from rediscluster import StrictRedisCluster

# redis cluster 集群最少三主三从
startup_nodes = [
    {"host":"192.168.3.25", "port":6379},  # 主
    {"host":"192.168.3.25", "port":7001},  # 6379的从数据库
    {"host":"192.168.3.25", "port":6380},  # 主
    {"host":"192.168.3.25", "port":7002},  # 6380的从数据库
    {"host":"192.168.3.25", "port":6381},  # 主
    {"host":"192.168.3.25", "port":7003}   # 6381的从数据库
]

# 连接集群
conn = StrictRedisCluster(startup_nodes=startup_nodes, decode_responses=True)

conn.set('name', 'lowman')
conn.set('kind', '屌丝')
conn.set('money', '3块8')

print("My name is: ", conn.get('name'))
print "I have money: ", conn.get('money')
其他的各项操作方法与 python 的 redis 库保持一致. startup_nodes 参数中即使存在 错误节点参数 也能连接成功: 理论上, 只要保证有一个节点参数正确就可以正常连接
#4
Linux 系统 / ssh 免 yes
最后发布 jvip_chen - 2022-06-16 08:44 下午
1. 使用ssh连接远程主机时加上"-o StrictHostKeyChecking=no"的选项,如下:(推荐!!!)

做法是使用-o 这个参数,在ssh/scp里加上 -o "StrictHostKeyChecking no" 即可跳过这个yes/no询问,直接进入下一步,例:

Use the -o option:

scp -o "StrictHostKeyChecking no" 1.txt user@host:1.txt

ssh -o "StrictHostKeyChecking no" user@host

2. 一个彻底去掉这个提示的方法是,修改/etc/ssh/ssh_config文件(或$HOME/.ssh/config)中的配置,添加如下两行配置:

一般为:StrictHostKeyChecking ask

可改为:StrictHostKeyChecking no

UserKnownHostsFile /dev/null

修改好配置后,重新启动sshd服务即可,命令为:/etc/init.d/sshd restart (或 service sshd restart )

当然,这是内网中非常信任的服务器之间的ssh连接,所以不考虑安全问题,就直接去掉了主机密钥(host key)的检查。

ssh中遇到的"Host key verification failed."问题,也是和"StrictHostKeyChecking"配置有关。

上面就是Linux去除ssh连接时The authenticity of host can't be xx established 提示的方法介绍了,如果你觉得该提示一直出现很烦的话,可选择去掉。

#5
数据库管理工具 / DBeaver笔记-快捷键篇
最后发布 virtual - 2022-05-25 10:11 下午
DBeaver 是一个通用的数据库管理工具和 SQL 客户端,支持 MySQL, PostgreSQL, Oracle, DB2, MSSQL, Sybase, Mimer, HSQLDB, Derby, 以及其他兼容 JDBC 的数据库。

DBeaver 提供一个图形界面用来查看数据库结构、执行 SQL 查询和脚本,浏览和导出数据,处理 BLOB/CLOB 数据,修改数据库结构等等。

hot key
ctrl + enter 执行sql
ctrl + shift + ↑ 向上复制一行
ctrl + shift + ↓ 向下复制一行
ctrl + alt + F 对sql语句进行格式化,对于很长的sql语句很有用
ctrl + d 删除当前行
alt + ↑ 向上选定一条sql语句
alt + ↓ 向下选定一条sql语句
ctrl + / 行注释
ctrl + shift+ / 块注释
ctrl + f 查找、替换
ctrl + space sql提示(如果写了from table后也会自动提示field)
ctrl + shift + E 执行计划
ctrl + shift + U 将选定的sql转换成大写字母
ctrl + shift + L 将选定的sql转换成小写字母
小技巧
有一些快捷键在使用时,只需要将光标移动到某一条sql语句上就行,不需要选定整条完整的语句。
有一些快捷键使用时是默认对当前一整个 Script 页面生效,可以通过光标来选定只想生效的范围。
#6
Linux 系统 / Rsync参数说明及使用文档
最后发布 jvip_chen - 2022-05-25 01:55 下午
一. 参数说明
①.daemon(服务端)模式:
用途: rsync --daemon [选项]...

选项
 --address=ADDRESS 绑定到指定的地址
 --bwlimit=RATE 限制套接字I/O带宽
 --config=FILE 不使用默认位置的rsyncd.conf文件,额外指定
 -M, --dparam=OVERRIDE 覆盖全局守护进程配置参数
 --no-detach 不要进行fork并后台运行
 --port=PORT 监听指定的端口
 --log-file=FILE 输出日志到指定文件
 --log-file-format=FMT 用指定格式更新日志
 --sockopts=OPTIONS 指定自定义的TCP选项
 -v, --verbose 详细模式输出
 -4, --ipv4 偏向于使用IPv4
 -6, --ipv6 偏向于使用IPv6
 --help 显示帮助信息
②.普通(客户端)模式:
用途: rsync [OPTION]... SRC [SRC]... DEST
通过远程shell访问方式:
rsync [选项]... [用户名@]HOST:SRC [DEST]
rsync [选项]... SRC [SRC]... [用户名@]HOST:DEST
通过rsync daemon访问方式:
rsync [选项]... [用户名@]HOST::SRC [DEST]
rsync [选项]... SRC [SRC]... [用户名@]HOST::DEST
rsync [选项]... SRC [SRC]... rsync://[用户名@]HOST[:PORT]/DEST
rsync [选项]... rsync://[USER@]HOST[:PORT]/SRC [DEST]

请注意,':'会使用ssh来远程连接,而'::'以及'rsync://'则用于以tcp方式连接一个rsync daemon服务器,这个需要SRC(源),以及包含模块名字的DEST(目的)

选项
 -v, --verbose 详细模式输出
 --info=FLAGS 输出INFO级别
 --debug=FLAGS 输出DEBUG级别
 --msgs2stderr 用于调试的特殊输出处理
 -q, --quiet 忽略非error的输出
 --no-motd 忽略Daemon模式的MOTD
 -c, --checksum 让自动跳过基于校验和而非默认的修改时间以及文件大小
 -a, --archive 归档(压缩)模式,表示以递归方式传输文件,并保持所有文件属性等同于-rlptgoD(无 -H,-A,-X)
 --no-OPTION 关闭隐含的选项(例如 --no-D)
 -r, --recursive 对子目录以递归模式处理
 -R, --relative 使用相对路径信息
 --no-implied-dirs 不使用--relative发送隐含的目录
 -b, --backup 创建备份,也就是对于目的已经存在有同样的文件名时,将老的文件重新命名为~filename.可以使用--suffix选项来指定不同的备份文件前缀
 --backup-dir=DIR 将备份文件(如~filename)存放在指定目录下
 --suffix=SUFFIX 定义备份文件前缀,默认是~
 -u, --update 仅仅进行更新,也就是跳过所有已经存在于DST,并且文件时间晚于要备份的文件(不覆盖更新的文件)
 --inplace update destination files in-place (SEE MAN PAGE)
 --append 将数据附加到较短的文件
 --append-verify 类似--append,但是对旧数据会计算校验和
 -d, --dirs 不使用递归传输目录
 -l, --links 不处理符号链接(保留符号链接)
 -L, --copy-links 将符号链接处理为具体的文件或者文件夹
 --copy-unsafe-links 只处理不安全的符号链接
 --safe-links 忽略不在SRC源目录的符号链接
 --munge-links munge符号链接使它们更安全(但会无法使用)
 -k, --copy-dirlinks 把指向文件夹的符号链接转换为文件夹
 -K, --keep-dirlinks 把接收端的指向文件夹的符号链接当做文件夹
 -H, --hard-links 保留硬链接
 -p, --perms 保留权限
 -E, --executability 保留文件的可执行属性
 --chmod=CHMOD 影响文件或文件夹的属性
 -A, --acls 保留ACLs (代表--perms)
 -X, --xattrs 保留扩展属性
 -o, --owner 保留所有者(仅限superuser)
 -g, --group 保留组
 --devices 保留设备文件(仅限superuser)
 --copy-devices 把设备文件内容当做文件一样进行复制处理
 --specials 保留特殊文件
 -D 和--devices --specials一样
 -t, --times 保留修改时间
 -O, --omit-dir-times 忽略文件夹的修改时间
 -J, --omit-link-times 忽略符号链接的修改时间
 --super 接收端尝试使用superuser进行操作
 --fake-super 使用xattrs来存储和恢复权限属性
 -S, --sparse 对稀疏文件进行特殊处理以节省空间
 --preallocate 在写入前预分配DST文件
 -n, --dry-run 执行一个没有实际更改的试运行,只会显示文件会被如何操作
 -W, --whole-file 拷贝文件,不进行增量检测
 -x, --one-file-system 不要跨越文件系统边界
 -B, --block-size=SIZE 检验算法使用的块尺寸,默认是700字节
 -e, --rsh=COMMAND 指定使用rsh,ssh方式进行数据同步
 --rsync-path=PROGRAM 指定远程服务器上的rsync命令所在路径
 --existing 仅仅更新那些已经存在于DST的文件,而不备份那些新创建的文件
 --ignore-existing 跳过更新已存在于DST的文件
 --remove-source-files 发送方删除非文件夹的源文件
 --del --delete-during的一个alias
 --delete 删除那些DST中SRC没有的文件
 --delete-before 传输前删除,而非传输过程中
 --delete-during 在传输过程中删除
 --delete-delay 在传输过程中确定要删除的,在传输结束后进行删除
 --delete-after 在传输结束后删除,而非传输过程中
 --delete-excluded 同样删除接收端那些被该选项指定排除的文件
 --ignore-missing-args 忽略丢失的源参数不输出错误
 --delete-missing-args 从DEST删除丢失的源参数
 --ignore-errors 即使出现I/O错误也进行删除
 --force 即使文件夹非空也强制删除
 --max-delete=NUM 不删除超过指定数量的文件
 --max-size=SIZE 不传输超过指定大小的文件
 --min-size=SIZE 不传输小于指定大小的文件
 --partial 保留那些因故没有完全传输的文件,以是加快随后的再次传输(即断点续传)
 --partial-dir=DIR 将因故没有完全传输的文件放到指定文件夹
 --delay-updates 在传输末尾把所有更新的文件放到位
 -m, --prune-empty-dirs 从文件列表中删除空目录链
 --numeric-ids 不要把uid/gid值映射为用户/组名
 --usermap=STRING 自定义用户名映射
 --groupmap=STRING 自定义组名映射
 --chown=USER:GROUP 简单的用户/组名映射
 --timeout=SECONDS 设置I/O超时,单位为秒
 --contimeout=SECONDS 设置Daemon连接超时,单位为秒
 -I, --ignore-times 不跳过那些有同样的时间和大小的文件
 -M, --remote-option=OPTION 只把指定选项发送到远端
 --size-only 只跳过大小相同的文件
 --modify-window=NUM 决定文件是否时间相同时使用的时间戳窗口,默认为0
 -T, --temp-dir=DIR 在指定文件夹中创建临时文件
 -y, --fuzzy 如果DEST没有任何文件,查找类似的文件
 --compare-dest=DIR 同样比较DIR中的文件来决定是否需要备份
 --copy-dest=DIR 和上面的类似,但是还会复制指定文件夹中的没有改变的文件
 --link-dest=DIR 和上面类似,只是没有改变的文件会被硬链接到DST
 -z, --compress 在传输过程中进行压缩
 --compress-level=NUM 指定压缩级别0-9,默认为6
 --skip-compress=LIST 跳过压缩文件后缀在指定列表中的文件
 -C, --cvs-exclude 自动跳过CVS的生成文件
 -f, --filter=RULE 添加一个文件过滤规则
 -F 等于--filter='dir-merge /.rsync-filter'
    重复的: --filter='- .rsync-filter'
 --exclude=PATTERN 排除符合匹配规则的文件
 --exclude-from=FILE 从指定文件中读取需要排除的文件
 --include=PATTERN 包含(不排除)符合匹配规则的文件
 --include-from=FILE 从指定文件中读取需要包含(不排除)的文件
 --files-from=FILE 从指定文件中读取SRC源文件列表
 -0, --from0 从文件中读取的文件名以'\0'终止
 -s, --protect-args 没有空格分隔;只有通配符的特殊字符
 --address=ADDRESS 绑定到指定的地址
 --port=PORT 指定其他的rsync服务端口
 --sockopts=OPTIONS 指定自定义的TCP选项
 --blocking-io 对远程shell使用阻塞IO
 --stats 提供某些文件的传输状态
 -8, --8-bit-output 在输出中留下高比特的字符
 -h, --human-readable 用人类可读的格式输出数字
 --progress 在传输过程中显示进度
 -P 等同于--partial --progress
 -i, --itemize-changes 输出对所有更新的变更摘要
 --out-format=FORMAT 用指定格式输出更新
 --log-file=FILE 将日志保存到指定文件
 --log-file-format=FMT 用指定格式更新日志
 --password-file=FILE 从文件读取Daemon服务器密码
 --list-only 不复制而是只列出
 --bwlimit=RATE 限制套接字I/O带宽
 --outbuf=N|L|B 设置输出缓冲,为None,Line或者Block
 --write-batch=FILE 写入批量更新到指定文件
 --only-write-batch=FILE 和上面类似,但是对DST进行只写的更新
 --read-batch=FILE 从指定文件读取一个批量更新
 --protocol=NUM 强制使用指定的老版本协议
 --iconv=CONVERT_SPEC 对文件名进行字符编码转换
 --checksum-seed=NUM 设置块/文件的校验和种子
 -4, --ipv4 偏向于使用IPv4
 -6, --ipv6 偏向于使用IPv6
 --version 打印版本号
(-h) --help 显示帮助信息

二. 服务端配置
服务端配置文件默认位置/etc/rsyncd.conf

分为两块,最开头的是全局参数,部分可以由daemon进程运行参数覆盖,如下
参数说明默认值
address在独立运行时,用于指定的服务器运行的 IP 地址。由 xinetd 运行时将忽略此参数,使用命令行上的 –address 选项替代。本地所有IP
port指定 rsync 守护进程监听的端口号。 由 xinetd 运行时将忽略此参数,使用命令行上的–port 选项替代。873
motd file指定一个消息文件,当客户连接服务器时该文件的内容显示给客户。
pid filersync 的守护进程将其 PID 写入指定的文件。
log file指定 rsync 守护进程的日志文件,而不将日志发送给 syslog。
syslog facility指定 rsync 发送日志消息给 syslog 时的消息级别。daemon
socket options指定自定义 TCP 选项。
     
另外的就是模块参数了

1.基础参数
参数说明默认值
path指定当前模块在 rsync 服务器上的同步路径,该参数是必须指定的。
comment给模块指定一个描述,该描述连同模块名在客户连接得到模块列表时显示给客户。

2.控制参数
参数说明默认值
use chroot若为 true,则 rsync 在传输文件之前首先 chroot 到 path 参数所指定的目录下。这样做的原因是实现额外的安全防护,但是缺点是需要 root 权限,并且不能备份指向 path 外部的符号连接所指向的目录文件。true
uid指定该模块以指定的 UID 传输文件。nobody
gid指定该模块以指定的 GID 传输文件。nobody
max connections指定该模块的最大并发连接数量以保护服务器,超过限制的连接请求将被告知随后再试。0(没有限制)
lock file指定支持 max connections 参数的锁文件。/var/run/rsyncd.lock
list指定当客户请求列出可以使用的模块列表时,该模块是否应该被列出。如果设置该选项为 false,可以创建隐藏的模块。true
read only指定是否允许客户上传文件。若为 true 则不允许上传;若为 false 并且服务器目录也具有读写权限则允许上传。true
write only指定是否允许客户下载文件。若为 true 则不允许下载;若为 false 并且服务器目录也具有读权限则允许下载。false
ignore errors指定 在 rsync 服务器上运行 delete 操作时是否忽略 I/O 错误。一般来说 rsync 在出现 I/O 错误时将将跳过 –delete 操作,以防止因为暂时的资源不足或其它 I/O 错误导致的严重问题。true
ignore nonreadable指定 rysnc 服务器完全忽略那些用户没有访问权限的文件。这对于在需要备份的目录中有些不应该被备份者获得的文件时是有意义的。false
timeout 该选项可以覆盖客户指定的 IP 超时时间。从而确保 rsync 服务器不会永远等待一个崩溃的客户端。对于匿名 rsync 服务器来说,理想的数字是 600(单位为秒)。0 (未限制)
dont compress用来指定那些在传输之前不进行压缩处理的文件。该选项可以定义一些不允许客户对该模块使用的命令选项列表。必须使用选项全名,而不能是简称。当发生拒绝某个选项的情况时,服务器将报告错误信息然后退出。例如,要防止使用压缩,应该是:"dont compress = *"。*.gz *.tgz *.zip *.z *.rpm *.deb *.iso *.bz2 *.tbz
   
3.文件过滤参数
参数说明默认值
exclude指定多个由空格隔开的多个文件或目录(相对路径),并将其添加到 exclude 列表中。这等同于在客户端命令中使用 –exclude 来指定模式。
exclude from指定一个包含 exclude 规则定义的文件名,服务器从该文件中读取 exclude 列表定义。
include指定多个由空格隔开的多个文件或目录(相对路径),并将其添加到 include 列表中。这等同于在客户端命令中使用 –include 来指定模式 。
include from指定一个包含 include 规则定义的文件名,服务器从该文件中读取 include 列表定义。

一个模块只能指定一个 exclude 参数、一个 include 参数。

结合 include 和 exclude 可以定义复杂的 exclude/include 规则 。

这几个参数分别与相应的 rsync 客户命令选项等价,唯一不同的是它们作用在服务器端。

4.用户认证参数
参数说明默认值
auth users指定由空格或逗号分隔的用户名列表,只有这些用户才允许连接该模块。这里的用户和系统用户没有任何关系。用户名和口令以明文方式存放在 secrets file 参数指定的文件中。(匿名方式)
secrets file指定一个 rsync 认证口令文件。只有在 auth users 被定义时,该文件才起作用。
strict modes指定是否监测口令文件的权限。若为 true 则口令文件只能被 rsync 服务器运行身份的用户访问,其他任何用户不可以访问该文件。true
       
rsync 认证口令文件的权限一定是 600,否则客户端将不能连接服务器。

rsync 认证口令文件中每一行指定一个"用户名:口令"对,格式为:

# 以 "#" 开始的行为注释行
username:passwd
# 一般来说口令最好不要超过8个字符。

5.访问控制参数
参数说明默认值
hosts allow用一个主机列表指定哪些主机客户允许连接该模块。不匹配主机列表的主机将被拒绝。*
hosts deny用一个主机列表指定哪些主机客户不允许连接该模块。
       
客户主机列表定义可以是以下形式:
单个IP地址。例如:192.168.0.1
整个网段。例如:192.168.0.0/24,192.168.0.0/255.255.255.0
可解析的单个主机名。例如:centos,centos.smartraining.cn
域内的所有主机。例如:*.smartraining.cn
"*"则表示所有。
多个列表项要用空格间隔。
6.日志参数
参数说明默认值
transfer logging使 rsync 服务器将传输操作记录到传输日志文件。false
log format 指定传输日志文件的字段。 "%o %h [%a] %m (%u) %f %l"
   
设置了"log file"参数时,在日志每行的开始会添加"%t [%p]"。

可以使用的日志格式定义符如下所示:
%a - 远程IP地址
%h - 远程主机名
%l - 文件长度字符数
%p - 该次 rsync 会话的 PID
%o - 操作类型:"send" 或 "recv"
%f - 文件名
%P - 模块路径
%m - 模块名
%t - 当前时间
%u - 认证的用户名(匿名时是 null)
%b - 实际传输的字节数
%c - 当发送文件时,记录该文件的校验码
举个列子方便解释
cat >/etc/rsyncd.conf<<'EOF'
#指定传输文件时守护进程具有的用户ID,这里表示默认为nobady
uid=nobady
#指定传输文件时守护进程具有的用户组ID,这里表示默认为nobady
gid=nobody
#禁止切换目录
use chroot=no
#客户端的最大连接数
max connection=10
#检查口令文件的权限,口令文件的权限用户属组必须是root,权限必须是600
strict modes=yes
#pid文件的位置
pid file=/var/run/rsyncd.pid
#lock文件的位置
lock file=/var/run/rsyncd.lock
#日志文件的位置
log file=/var/log/rsyncd.log
 
#定义模块名,这玩意就是客户端命令跟在IP后面的,作为DST的一部分
[plex]
#指定这个模块需要同步的路径,或者说作为base目录
path=/home/plex/movie
#这个是注释 可以自己定义
comment=plex library
#忽略一些无关的IO错误
ignore errors
#no代表客户端可以上传文件,yes表示只读取
read only=no
#no表示客户端可以下载文件,yes表示不能下载
write only=no
#表示允许连接的主机地址
hosts allow=1.2.3.4
#表示不允许连接的主机地址
hosts deny=*
#不允许该模块被客户端列出
list=false
#指定传输文件时守护进程具有的用户ID,
uid=root
#指定传输文件时守护进程具有的用户组ID,
gid=root
#用来指定连接该模块的用户名,用户名可以自定义,这个是客户端命令跟在IP前面那个
auth users=plex
#指定密码文件,文件里面记录的是用户名:密码
secrets file=/etc/srs.pass
EOF
 
echo "用户名:密码" >/etc/srs.pass
#权限必须600,不然GG
chmod 600 /etc/srs.pass
#开机启动
echo "rsync --daemon --config=/etc/rsyncd.conf" >>/etc/rc.local
#立即运行服务端,其实这儿的配置文件位置就是默认的,可以不加--config
rsync --daemon --config=/etc/rsyncd.conf
三. 客户端命令
如果配置了密码,请务必先丢个密码文件,然后保证它的权限为600

echo "密码" >/etc/rsyncd.pass
chmod 600 /etc/rsyncd.pass

这样能列出服务端可同步的文件(如果搞单向同步你肯定就用不着这个了

rsync --list-only --password-file=/etc/rsyncd.pass plex@1.2.3.4::plex
rsync --list-only --password-file=/etc/rsyncd.pass rsync://plex@1.2.3.4/plex
然后手动同步我们可以这样(当然手动是可以不指定password-file的,反正会提示你输密码,如果写到脚本或者crontab里就必须带上了)

rsync -avzP --delete --exclude "*.torrent" /home/complete/ plex@1.2.3.4::plex
rsync -avzP --delete /home/complete/ rsync://plex@1.2.3.4/plex
P参数是给你看着玩的,不然鬼知道同步到啥程度了,写脚本里就别带了,单向传输脚本里如果要那个断点续传请自己做好命令返回状态的判断,因为单向传输是一次性的,如果是同步就没必要了,毕竟你会隔阵子就运行

z是压缩,如果你cpu不行或者需要降低资源消耗,可以带上–compress-level来减小下压缩率,0-9哦,从低到高资源消耗越来越大,当然你也可以不压缩,文本内容我觉得开个1或者2就很给力了

四. 常见错误
问题一:

@ERROR: chroot failed
rsync error: error starting client-server protocol (code 5) at main.c(1522) [receiver=3.0.3]

原因:
服务器端的目录不存在或无权限,创建目录并修正权限可解决问题

问题二:

@ERROR: auth failed on module backup
rsync error: error starting client-server protocol (code 5) at main.c(1522) [receiver=3.0.3]

原因:
服务器端该模块(backup)需要验证用户名密码,但客户端没有提供正确的用户名密码,认证失败
提供正确的用户名密码解决此问题

问题三:

@ERROR: Unknown module 'backup'
rsync error: error starting client-server protocol (code 5) at main.c(1522) [receiver=3.0.3]

原因:
服务器不存在指定模块。提供正确的模块名或在服务器端修改成你要的模块以解决问题

问题四:

password file must not beother-accessible
continuing without password file
Password:

原因:
这是因为rsyncd.pwd rsyncd.secrets的权限不对,应该设置为600。如:chmod 600 rsyncd.pwd

问题五:

rsync: failed to connect to218.107.243.2: No route to host (113)
rsync error: error in socket IO(code 10) at clientserver.c(104) [receiver=2.6.9]

原因:
对方没开机、防火墙阻挡、通过的网络上有防火墙阻挡,都有可能。关闭防火墙,其实就是把tcp udp的873端口打开

问题六:

rsync error: error startingclient-server protocol (code 5) at main.c(1524) [Receiver=3.0.7]

原因:
/etc/rsyncd.conf配置文件内容有错误。请正确核对配置文件

问题七:

rsync: chown "" failed:Invalid argument (22)

原因:
权限无法复制。去掉同步权限的参数即可。(这种情况多见于Linux向Windows的时候)
问题八:

@ERROR: daemon security issue –contact admin
rsync error: error starting client-server protocol (code 5) at main.c(1530)[sender=3.0.6]

原因:
同步的目录里面有软连接文件,需要服务器端的/etc/rsyncd.conf打开use chroot = yes。掠过软连接文件
#7
Linux 系统 / linux rsync命令详解
最后发布 jvip_chen - 2022-05-25 01:19 下午
在Linux操作系统中,"rsync的"代表远程同步。它是一种用于将文件和目录从源 (SRC) 同步(复制)到目标 (DEST) 的实用程序。

文件和目录可以在本地主机上同步,也可以与远程主机同步。在 SRC 上,文件和目录将被同步。而在 DEST 上,将发生同步的文件和目录。

此外,rsync 命令可以递归复制文件和目录、复制符号链接、保留(权限、组、修改时间和所有权)文件身份。

Rsync 可以使用两种不同的方式来同步/复制文件或目录:

使用远程 shell:ssh 或 rsh
直接通过 TCP 使用 rsync 守护进程
更重要的是,rsync 使用增量传输算法,该算法仅在 SRC 和 DEST 之间复制/同步不同的数据。

本教程将通过动手实践和示例介绍使用 rsync 命令的多种方法。我们还将详细解释 rsync 命令的最常用选项。

Rsync 命令语法
在深入研究 rsync 命令的使用方法之前,让我们先来看看它的语法:

rsync [options] 
在本地机器上复制/同步文件
Rsync 命令可用于在本地机器上复制/同步文件。

假设您要将文件从名为 '/home/jack' 的用户 'jack' 的主目录复制到文件夹 '/opt/test'。

$ sudo rsync -zvh /home/jack/computer-networking.pdf /opt/test/
computer-networking.pdf

sent 1.01K bytes  received 35 bytes  2.10K bytes/sec
total size is 3.03K  speedup is 2.89
-z: 压缩

-v: 详细输出

-h: 人类可读

在本地机器上复制/同步目录
要将所有文件从 SRC 本地目录传输到 DEST 目录,请运行带有选项的 rsync 命令-zavh。

假设您要将名为 '/home/jack' 的用户 'jack' 的主目录复制到文件夹 '/opt/backup'。

$ sudo rsync -zavh /home/jack/ /opt/backup/

sending incremental file list
./
.bash_history
.bash_logout
.bashrc
.lesshst
.profile
.sudo_as_admin_successful
.viminfo
computer-networking.pdf
.ssh/
.ssh/known_hosts

sent 4.85K bytes  received 198 bytes  10.10K bytes/sec
total size is 9.59K  speedup is 1.90
-a: 在复制/同步过程中存档数据

您可以验证 rsync 命令是否成功,运行以下命令:

$ ls /opt/backup/ -la
total 40
drwxr-xr-x 3 jack jack 4096 Thg 6 15 16:02 .
drwxr-xr-x 4 root     root     4096 Thg 6 15 16:25 ..
-rw------- 1 jack jack  817 Thg 6 15 16:01 .bash_history
-rw-r--r-- 1 jack jack  220 Thg 6 11 15:58 .bash_logout
-rw-r--r-- 1 jack jack 3771 Thg 6 11 15:58 .bashrc
-rw-rw-r-- 1 jack jack 3028 Thg 2 25  2017 computer-networking.pdf
-rw------- 1 jack jack   40 Thg 6 15 15:51 .lesshst
-rw-r--r-- 1 jack jack  807 Thg 6 11 15:58 .profile
drwx------ 2 jack jack 4096 Thg 6 13 17:58 .ssh
-rw-r--r-- 1 jack jack    0 Thg 6 15 16:02 .sudo_as_admin_successful
-rw------- 1 jack jack  680 Thg 6 14 16:50 .viminfo
使用特定端口通过 ssh 进行 Rsync
您可以使用 ssh(安全外壳)复制/同步数据,您的数据将通过加密的安全连接传输。当您的数据在 Internet 上传输时,没有人可以读取您的数据。当您使用 rsync 命令时,您需要提供用户/root 密码来完成特定任务。使用 SSH 选项将以加密方式发送您的登录信息,以便您的密码安全。

使用特定的 ssh 端口将文件从远程复制到本地。为了使用 rsync 命令指定协议,您需要使用-e带有要使用的协议名称的选项。

例如,以下 rsync 命令将通过远程外壳将文件"deploy.yaml"从远程机器复制到用户"jack"的主目录。

$ rsync -avz -e "ssh -p 22" cas@10.9.8.41:/home/cas/deploy.yaml /home/jack/
cas@10.9.8.41's password:
receiving incremental file list

sent 20 bytes  received 60 bytes  32.00 bytes/sec
total size is 239  speedup is 2.99
从本地机器复制/同步文件和目录到远程机器
假设您要将本地主机中用户 'jack' 的主目录中的文件夹 'test-data' 复制/同步到远程机器 'cas@10.9.8.41' 的主目录,请运行命令:

$ rsync -azrvh /home/jack/computer-networking.pdf cas@10.9.8.41:
cas@10.9.8.41's password:
sending incremental file list
computer-networking.pdf

sent 1.04K bytes  received 35 bytes  430.80 bytes/sec
total size is 3.03K  speedup is 2.81
-r: 递归复制

从远程机器复制/同步文件和目录到本地机器
rsync 命令可帮助您传输要复制到本地主机中的远程目录"文档"。

假设您要将文件/目录从远程主机"cas@10.9.8.41"复制/同步到用户"jack"的主目录。

例如:

$ rsync -zavhr cas@10.9.8.41:document /home/jack
cas@10.9.8.41's password:
receiving incremental file list
document/
document/kubernetes.txt

sent 47 bytes  received 139 bytes  74.40 bytes/sec
total size is 0  speedup is 0.00
rsync -include 和 -exclude 选项
这两个选项允许我们通过使用这些选项指定参数来包含和排除文件,这有助于我们指定要包含在同步中的文件或目录,并排除 您不想传输的文件和文件夹。

在此示例中,rsync 命令将仅包含以 'k' 开头的文件和目录,并排除所有其他文件和目录。
$ rsync -avhz -e "ssh -p 22" --include 'k*' --exclude '*' cas@10.9.8.41: /home/jack

cas@10.9.8.41's password:
receiving incremental file list
./
k8s.yaml
kubernetes.yaml
kuber/

sent 88 bytes  received 280 bytes  147.20 bytes/sec
total size is 73  speedup is 0.20
设置最大文件大小
您可以指定要传输或同步的最大文件大小。您可以使用"–max-size"选项来完成。

在以下示例中,最大文件大小为 200k,因此此命令将仅传输等于或小于 200k 的文件。

$ rsync -zavhr --max-size='200k' cas@10.9.8.41: /home/jack
cas@10.9.8.41's password:
receiving incremental file list
.bash_history
.bash_logout
.bashrc
.profile
.sudo_as_admin_successful
.viminfo
computer-networking.pdf

sent 2.58K bytes  received 51.60K bytes  21.67K bytes/sec
total size is 113.24K  speedup is 2.09
传输成功后删除源文件
现在,假设您有一台 Web 服务器和一台数据备份服务器,您创建了每日备份并将其与您的备份服务器同步,现在您不想在您的 Web 服务器中保留备份的本地副本。那么,您会等待传输完成然后手动删除该本地备份文件吗?当然不。这种自动删除可以使用"–remove-source-files"选项来完成。

$ ls /home/directory
computer-networking.pdf  deploy.yaml  document  k8s.yaml  kuber  kubernetes.yaml

------
$ rsync -azvh --remove-source-files /home/jack/deploy.yaml cas@10.9.8.41:
cas@10.9.8.41's password:
sending incremental file list

sent 70 bytes  received 20 bytes  36.00 bytes/sec
total size is 239  speedup is 2.66
再次运行'ls'命令,可以看到SRC上的'deploy.yaml'文件被删除了。

$ ls
computer-networking.pdf  document  k8s.yaml  kuber  kubernetes.yaml
查找src和dest在文件和目录上的区别
为了找到 SRC 和 DEST 之间目录文件的任何差异,您可以使用 '-i' 选项运行 rsync 命令。

$ rsync -avzi /home/jack/cloud cas@10.9.8.41:
cas@10.9.8.41's password:
sending incremental file list
cd+++++++++ cloud/
限制带宽
您可以在使用 '--bwlimit=<KB/s>' 选项运行 rsync 命令时设置带宽限制。

假设要将数据传输速率限制为 300KB/s,请运行以下命令:

$ rsync -avzh --bwlimit=300 /home/jack/coursera.png cas@10.9.8.41:

cas@10.9.8.41's password:
sending incremental file list
coursera.png

sent 2.93M bytes  received 35 bytes  234.48K bytes/sec
total size is 3.00M  speedup is 1.02
scp失败时恢复传输
有时,您必须通过 scp 命令传输一个非常大的文件,但在复制时出错,由于文件大且耗时,因此无法使用 scp 命令再次开始传输。

在这种情况下,您可以使用 rsync 命令从出现错误的位置开始复制文件。例如,将主目录中的大型 ISO 文件复制到远程主机 'cas@10.9.8.41'

$ scp /home/jack/ubuntu-18.04.4-live-server-amd64.iso cas@10.9.8.41:

cas@10.9.8.41's password:
ubuntu-18.04.4-live-server-amd64.iso                                                                                                                                              32%  278MB  86.7MB/s   00:06 ETA
该进程已被用户杀死。当时,传输了 32% 的文件。现在,您可以通过运行 rsync 继续当前的工作:

$ rsync -P -avzh ubuntu-18.04.4-live-server-amd64.iso cas@10.9.8.41:

cas@10.9.8.41's password:
sending incremental file list
ubuntu-18.04.4-live-server-amd64.iso
        912.26M 100%   15.89MB/s    0:00:54 (xfr#1, to-chk=0/1)

sent 541.25M bytes  received 132.44K bytes  9.25M bytes/sec
total size is 912.26M  speedup is 1.69
rsync 命令恢复传输文件
传输数据时显示进度
如果要在运行 rsync 命令时查看传输的进度,可以使用"--progress"选项。

它将显示文件和完成复制的剩余时间。

例如:

$ rsync -avh --progress /home/jack/cloud/ cas@10.9.8.41:
cas@10.9.8.41's password:
sending incremental file list
./
computer-networking.pdf
          3.03K 100%    0.00kB/s    0:00:00 (xfr#1, to-chk=8/10)
coursera.png
          3.00M 100%  114.38MB/s    0:00:00 (xfr#2, to-chk=7/10)
k8s.yaml
             39 100%    1.52kB/s    0:00:00 (xfr#3, to-chk=6/10)
kubernetes.yaml
             34 100%    1.33kB/s    0:00:00 (xfr#4, to-chk=5/10)
ubuntu-18.04.4-live-server-amd64.iso
        912.26M 100%   89.60MB/s    0:00:09 (xfr#5, to-chk=4/10)
document/
document/kubernetes.txt
              0 100%    0.00kB/s    0:00:00 (xfr#6, to-chk=1/10)
kuber/
kuber/test.txt
              0 100%    0.00kB/s    0:00:00 (xfr#7, to-chk=0/10)

sent 915.49M bytes  received 164 bytes  79.61M bytes/sec
total size is 915.26M  speedup is 1.00

结论
在本教程中,我们通过一些示例学习了如何使用 rsync 命令来复制或同步文件/目录。
#8
在 Windows 服务器上
使用域管理员帐户登录到 vCenter Server。如果 vCenter Single Sign-On 未与 vCenter Server 安装在一起,则登录到 vCenter Single Sign-On 服务器。
打开提升的命令提示符。
通过运行以下命令导航到 vmdird 目录:
代码: 全选

cd Program Files\VMware\Infrastructure\VMware\CIS\vmdird
运行
c:\Program Files\VMware\Infrastructure\VMware\CIS\vmdird\vdcadmintool.exe
该控制台载入:
===============================
请选择:
0. 退出
1.测试 LDAP 连接
2.强制启动复制周期
3.重置帐户密码
4.设置日志级别和掩码
5.设置 vmdir 状态
===============================

按 3 进入重置帐户密码选项。
提示提供帐户 DN 时,输入:
cn=Administrator,cn=users,dc=vSphere,dc=local
此时新密码即生成。

使用新生成的密码登录到 administrator@vSphere.local 帐户。

注意:如果生成的密码包含感叹号 (!),请再次执行重新生成过程。

重新生成密码后,登录到 vSphere Web Client,并更改密码以使其符合 VMware 的受支持字符列表。有关详细信息,请参见 vSphere 5.5 Single Sign-On administrator@vsphere.local password issues (2060637)。
在 vCenter Server Appliance 中
通过 SSH 连接到 vCenter Server Appliance。
运行
/usr/lib/vmware-vmdir/bin/vdcadmintool

该控制台载入:

================================
请选择:
0. 退出
1. 测试 LDAP 连接
2. 强制启动复制周期
3. 重置帐户密码
4. 设置日志级别和掩码
5. 设置 vmdir 状态
================================

按 3 进入重置帐户密码选项。
提示提供帐户 DN 时,输入:
cn=Administrator,cn=users,dc=vSphere,dc=local
或者
administrator@vsphere.local
新密码即生成。

使用生成的密码登录到 administrator@vSphere.local 帐户。

注意:如果生成的密码包含感叹号 (!),请再次执行重新生成过程。

重新生成密码后,登录到 vSphere Web Client,并更改密码以使其符合 VMware 的受支持字符列表。
#9
VMware / vmrun命令行的使用(VMWare虚拟机)
最后发布 jvip_chen - 2022-05-25 10:37 上午
VMware Workstation 虚拟机中 vmrun 命令的使用

基本命令:
vmrun -T ws start "/opt/VMware/win2k8r2.vmx" nogui
# 启动无图形界面虚拟机 
#(-T 是区分宿主机的类型,ws|server|server1|fusion|esx|vc|player,比较常用的是ws、esx和player)
vmrun start "/opt/VMware/win2k8r2.vmx" gui
# 启动带图形界面虚拟机
vmrun stop "/opt/VMware/win2k8r2.vmx" hard | soft
# 强制关闭虚拟机(相当于直接关电源) | 正常关闭虚拟机
vmrun reset "/opt/VMware/win2k8r2.vmx" hard | soft
# 冷重启虚拟机 | 热重启虚拟机
vmrun suspend  "/opt/VMware/win2k8r2.vmx" hard | soft
# 挂起虚拟机(可能相当于休眠)
vmrun pause  "/opt/VMware/win2k8r2.vmx"
# 暂停虚拟机
vmrun unpause  "/opt/VMware/win2k8r2.vmx"
# 停止暂停虚拟机   
vmrun list
# 列出正在运行的虚拟机
ps aux | grep vmx
# 另一种查看正在运行虚拟机的方法
vmrun -T ws snapshot "/opt/VMware/win2k8r2.vmx" snapshotName
# 创建一个快照(snapshotName 快照名)
vmrun -T ws reverToSnapshot "/opt/VMware/win2k8r2.vmx" snapshotName
# 从一个快照中恢复虚拟机(snapshotName 快照名)
vmrun -T ws listSnapshots "/opt/VMware/win2k8r2.vmx"
# 列出虚拟机快照数量及名称
vmrun -T ws deleteSnapshot "/opt/VMware/win2k8r2.vmx" snapshotName
# 删除一个快照(snapshotName 快照名)
#10
VMware / vmware命令行
最后发布 jvip_chen - 2022-05-25 10:35 上午
本篇讲解几个简单的vmware的命令。
vmrun start "d:\\centos\\qs.vmx" nogui 无界面启动
vmrun start "d:\\centos\\qs.vmx" gui 图形化界面启动
vmrun list 列出正在运行的虚拟机
vmrun stop "d:\\centos\\qs.vmx" soft 正常关闭虚拟机
vmrun stop "d:\\centos\\qs.vmx" hard 强制关闭虚拟机
vmrun reset "d:\\centos\\qs.vmx" soft 热重启虚拟机
vmrun reset "d:\\centos\\qs.vmx" hard 冷重启虚拟机
vmrun sudpend "d:\\centos\\qs.vmx" soft 热挂起(休眠)
vmrun sudpend "d:\\centos\\qs.vmx" hard 冷挂起(休眠)
vmrun pause "d:\\centos\\qs.vmx" 暂停虚拟机
vmrun listsnapshots "d:\\centos\\qs.vmx" 查看某虚拟机有多少快照
vmrun snapshot "d:\\centos\\qs.vmx" snapshotcmdtest 创建快照
vmrun deleteSnapshot "d:\\centos\\qs.vmx" snapshotcmdtest 删除一个快照
vmrun revertToSnapshot "d:\\centos\\qs.vmx" snapshotcmdtest 从快照中恢复
Invalid argument: --help
vmrun version 1.15.0 build-2985596

Usage: vmrun [AUTHENTICATION-FLAGS] COMMAND [PARAMETERS]



AUTHENTICATION-FLAGS
--------------------
These must appear before the command and any command parameters.

-h <hostName> (not needed for Workstation)
-P <hostPort> (not needed for Workstation)
-T <hostType> (ws|server|server1|fusion|esx|vc|player)
for example, use '-T server' for Server 2.0
use '-T server1' for Server 1.0
use '-T ws' for VMware Workstation
use '-T ws-shared' for VMware Workstation (shared mode)
use '-T esx' for VMware ESX
use '-T vc' for VMware vCenter Server
-u <userName in host OS> (not needed for Workstation)
-p <password in host OS> (not needed for Workstation)
-vp <password for encrypted virtual machine>
-gu <userName in guest OS>
-gp <password in guest OS>

// 关于虚拟机电源的命令

POWER COMMANDS PARAMETERS DESCRIPTION
-------------- ---------- -----------
start Path to vmx file Start a VM or Team (vmrun start "d:\\centos\\qs.vmx" nogui 无界面启动)
[gui|nogui] (vmrun start "d:\\centos\\qs.vmx" gui 图形化界面启动)

stop Path to vmx file Stop a VM or Team (vmrun stop "d:\\centos\\qs.vmx" soft 正常关闭虚拟机)
[hard|soft] (vmrun stop "d:\\centos\\qs.vmx" hard 强制关闭虚拟机)

reset Path to vmx file Reset a VM or Team (vmrun reset "d:\\centos\\qs.vmx" soft 热重启虚拟机)
[hard|soft] (vmrun reset "d:\\centos\\qs.vmx" hard 冷重启虚拟机)

suspend Path to vmx file Suspend a VM or Team (vmrun sudpend "d:\\centos\\qs.vmx" soft 热挂起)
[hard|soft] (vmrun sudpend "d:\\centos\\qs.vmx" hard 冷挂起)

pause Path to vmx file Pause a VM (vmrun pause "d:\\centos\\qs.vmx" 暂停虚拟机)

unpause Path to vmx file Unpause a VM (vmrun unpause "d:\\centos\\qs.vmx" 从暂停中恢复虚拟机)

// 关于快照的命令

SNAPSHOT COMMANDS PARAMETERS DESCRIPTION
----------------- ---------- -----------
listSnapshots Path to vmx file List all snapshots in a VM
[showTree] (vmrun listSnapshots "d:\\centos\\qs.vmx" 查看某虚拟机有多少快照)

snapshot Path to vmx file Create a snapshot of a VM
Snapshot name (vmrun snapshot "d:\\centos\\qs.vmx" snapshotcmdtest 创建一个快照)

deleteSnapshot Path to vmx file Remove a snapshot from a VM
Snapshot name (vmrun deleteSnapshot "d:\\centos\\qs.vmx" snapshotcmdtest 删除一个快照)
[andDeleteChildren]

revertToSnapshot Path to vmx file Set VM state to a snapshot
Snapshot name (vmrun revertToSnapshot "d:\\centos\\qs.vmx" snapshotcmdtest 从快照中恢复)



GUEST OS COMMANDS PARAMETERS DESCRIPTION
----------------- ---------- -----------
runProgramInGuest Path to vmx file Run a program in Guest OS
[-noWait]
[-activeWindow]
[-interactive]
Complete-Path-To-Program
[Program arguments]

fileExistsInGuest Path to vmx file Check if a file exists in Guest OS
Path to file in guest

directoryExistsInGuest Path to vmx file Check if a directory exists in Guest OS
Path to directory in guest

setSharedFolderState Path to vmx file Modify a Host-Guest shared folder
Share name
Host path
writable | readonly

addSharedFolder Path to vmx file Add a Host-Guest shared folder
Share name
New host path

removeSharedFolder Path to vmx file Remove a Host-Guest shared folder
Share name

enableSharedFolders Path to vmx file Enable shared folders in Guest
[runtime]

disableSharedFolders Path to vmx file Disable shared folders in Guest
[runtime]

listProcessesInGuest Path to vmx file List running processes in Guest OS

killProcessInGuest Path to vmx file Kill a process in Guest OS
process id

runScriptInGuest Path to vmx file Run a script in Guest OS
[-noWait]
[-activeWindow]
[-interactive]
Interpreter path
Script text

deleteFileInGuest Path to vmx file Delete a file in Guest OS
Path in guest

createDirectoryInGuest Path to vmx file Create a directory in Guest OS
Directory path in guest

deleteDirectoryInGuest Path to vmx file Delete a directory in Guest OS
Directory path in guest

CreateTempfileInGuest Path to vmx file Create a temporary file in Guest OS

listDirectoryInGuest Path to vmx file List a directory in Guest OS
Directory path in guest

CopyFileFromHostToGuest Path to vmx file Copy a file from host OS to guest OS
Path on host Path in guest


CopyFileFromGuestToHost Path to vmx file Copy a file from guest OS to host OS
Path in guest Path on host


renameFileInGuest Path to vmx file Rename a file in Guest OS
Original name
New name

captureScreen Path to vmx file Capture the screen of the VM to a local file
Path on host

writeVariable Path to vmx file Write a variable in the VM state
[runtimeConfig|guestEnv|guestVar]
variable name
variable value

readVariable Path to vmx file Read a variable in the VM state
[runtimeConfig|guestEnv|guestVar]
variable name

getGuestIPAddress Path to vmx file Gets the IP address of the guest
[-wait]



GENERAL COMMANDS PARAMETERS DESCRIPTION
---------------- ---------- -----------
list List all running VMs (vmrun list 列出所有正在运行的虚拟机)

upgradevm Path to vmx file Upgrade VM file format, virtual hw

installTools Path to vmx file Install Tools in Guest

checkToolsState Path to vmx file Check the current Tools state

register Path to vmx file Register a VM

unregister Path to vmx file Unregister a VM

listRegisteredVM List registered VMs

deleteVM Path to vmx file Delete a VM (vmrun deleteVM vmname 删除名为vmname的虚拟机)

clone Path to vmx file Create a copy of the VM (克隆一个虚拟机:完全克隆/链接克隆)
Path to destination vmx file
full|linked
[-snapshot=Snapshot Name]
[-cloneName=Name]




Examples:


Starting a virtual machine with Workstation on a Windows host
   vmrun -T ws start "c:\my VMs\myVM.vmx"
Stopping a virtual machine on an ESX host
   vmrun -T esx -h https://myHost.com/sdk -u hostUser -p hostPassword stop "[storage1] vm/myVM.vmx"
Running a program in a virtual machine with Workstation on a Windows host with Windows guest
   vmrun -T ws -gu guestUser -gp guestPassword runProgramInGuest "c:\my VMs\myVM.vmx" "c:\Program Files\myProgram.exe"Running a program in a virtual machine with Server on a Linux host with Linux guest
vmrun -T server -h https://myHost.com:8333/sdk -u hostUser -p hostPassword -gu guestUser -gp guestPassword runProgramInGuest "[standard] vm/myVM.vmx" /usr/bin/X11/xclock -display :0


Creating a snapshot of a virtual machine with Workstation on a Windows host
   vmrun -T ws snapshot "c:\my VMs\myVM.vmx" mySnapshot
Reverting to a snapshot with Workstation on a Windows host
   vmrun -T ws revertToSnapshot "c:\my VMs\myVM.vmx" mySnapshot
Deleting a snapshot with Workstation on a Windows host
   vmrun -T ws deleteSnapshot "c:\my VMs\myVM.vmx" mySnapshot
Enabling Shared Folders with Workstation on a Windows host
   vmrun -T ws enableSharedFolders "c:\my VMs\myVM.vmx"