[Unit]
Description=Syncing stuff to and fro Google Drive
[Service]
Type=oneshot
ExecStart=/usr/bin/rclone --options-to-rclone --whatevers
Requires=network.target
After=network.target
# The following only if not right to run rclone as root
User=yourusername
Group=yourgroupnametypicallysameasusername
[Install]
WantedBy=multi-user.target
# use WantedBy=graphical.target instead if you need that to be done
# only when the system's ready to log in graphically
您所描述的内容不需要或建议在您的 shell 初始化中执行此操作,而只是作为您的用户会话工作所需的单元。
如果您希望在达到图形目标或达到多用户引导目标之前完成此操作,只需确保您的启动系统有一个它调用的启动脚本。
现在,您没有说您正在使用哪个启动系统,甚至没有说哪个操作系统——但阅读“bash”,我想它是带有 systemd 的 Linux。
这使得这很容易。只需编写一个所谓的systemd 单元文件,然后您就可以启动它。这非常优雅,因为它可以在您的网络启动后立即运行,而系统中的其他内容则并行初始化;由于同步文件主要是通过等待网络数据来绑定,这基本上不会给您的系统带来额外的负载,并且只要您可以登录就可以完成同步。
一个 systemd 单元文件看起来大致像这样:
将其作为 .service 文件放在 systemd 系统服务文件目录中,例如 ,
/etc/systemd/system/rsync-googledrive.server
然后sudo systemctl enable rsync-googledrive
将确保该服务在引导时启动。~/.config/systemd/user/
相反,您也可以通过将其放入;来使其成为用户服务。在这种情况下删除User=
和行,并将该行Group=
替换为。WantedBy=
WantedBy=default.target