MAC自动备份数据到服务器

需求:公司内部使用自己电脑,回家需要使用另一台电脑,所以想时时备份公司用的电脑中文件、代码到服务器上,回家就可以用啦

1 无密码使用scp

(1)第一步:生成密匙对,我用的是rsa的密钥。使用命令 "ssh-keygen -t rsa"
[[email protected] user1]$ ssh-keygen -t rsa 
Generating public/private rsa key pair. 
Enter file in which to save the key (/home/user1/.ssh/id_rsa): 
Created directory ‘/home/user1/.ssh‘. 
Enter passphrase (empty for no passphrase): 
Enter same passphrase again: 
Your identification has been saved in /home/user1/.ssh/id_rsa. 
Your public key has been saved in /home/user1/.ssh/id_rsa.pub. 
The key fingerprint is: 
e0:f0:3b:d3:0a:3d:da:42:01:6a:61:2f:6c:a0:c6:e7 [email protected] 
[[email protected] user1]$

(2)生成的过程中提示输入密钥对保存位置,直接回车,接受默认值就行了。接着会提示输入一

个不同于你的password的密码,直接回车,让它空着。当然,也可以输入一个。(我比较懒

,不想每次都要输入密码。) 这样,密钥对就生成完了。

其中公共密钥保存在 ~/.ssh/id_rsa.pub
私有密钥保存在 ~/.ssh/id_rsa

然后改一下 .ssh 目录的权限,使用命令 "chmod 755 ~/.ssh"
[[email protected] user1]$ chmod 755 ~/.ssh

(3)之后把这个密钥对中的公共密钥复制到你要访问的机器上去,并保存为

~/.ssh/authorized_keys.
[[email protected] user1]$ scp ~/.ssh/id_rsa.pub rh1:/home/user1/.ssh/authorized_keys 
[email protected]‘s password: 
id_rsa.pub 100% 228 3.2MB/s 00:00 
[[email protected] user1]$

2 脚本编写

(1)版本1

#!/bin/sh
echo "[`date ‘+%Y-%m-%d %H:%M:%S‘`]------------------------"
cd /Users/scg/Desktop
scp -r pan [email protected]:~/

3 定时调用脚本

MAC下可以用launchctl来定时执行任务。

launchctl通过plist配置的方式来实现定时任务的,其优点就是最小时间间隔是一秒

plist脚本存放路径为/Library/LaunchDaemons或/Library/LaunchAgents,其区别是后一个路径的脚本当用户登陆系统后才会被执行,前一个只要系统启动了,哪怕用户不登陆系统也会被执行。

可以通过两种方式来设置脚本的执行时间。一个是使用StartInterval,它指定脚本每间隔多长时间(单位:秒)执行一次;另外一个使用StartCalendarInterval,它可以指定脚本在多少分钟、小时、天、星期几、月时间上执行

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
    <key>Label</key>
    <string>com.meituan.scg.plist</string>
    <key>ProgramArguments</key>
    <array>
        <string>/Users/scg/Desktop/pan.sh</string>
    </array>
    <key>KeepAlive</key>
    <true/>
    <key>RunAtLoad</key>
    <true/>
    <key>StartInterval</key>
    <integer>600</integer>
    <key>StandardOutPath</key>
    <string>/Users/scg/Desktop/pan.log</string>
    <key>StandardErrorPath</key>
    <string>/Users/scg/Desktop/pan_error.log</string>
</dict>
</plist>

说明:

(1)label这里就是给这个任务名个名字,这里一般取plist的文件名,这个名字不能和其它的plist重复。

(2)pan.sh就是我们要执行的脚本

(3)KeepAlive 是否一直保持alive

(4)StartInterval 每隔多少秒执行

详细参数见 https://developer.apple.com/library/mac/documentation/Darwin/Reference/ManPages/man5/launchd.plist.5.html

我将这个plist文件放在/Library/LaunchDaemons。需要做chown root *.plist 和 chgrp while *.plist

4 执行这个plist

  • 要让任务生效,必须先load命令加载这个plist
  • 如果任务呗修改了,那么必须先unload,然后重新load
  • start可以测试任务,这个是立即执行,不管时间到了没有
  • 执行start和unload前,任务必须先load过,否则报错
  • stop可以停止任务
  • ProgramArguments内不能直接写命令,只能通过shell脚本来执行

最常使用的命令:

  1. 加载任务 launchctl load -w ***.plist ;-w选项会将plist文件中无效的key覆盖掉,建议加上
  2. 删除任务 launchctl unload -w ***.plist
  3. 查看任务列表 launchctl list;列表会显示很多任务,建议过滤一下:launchctl list | grep ‘任务的部分名字‘

5 todo

(1) 开机自启动

(2) 只复制那些修改了的文件。(需要一个文件保存所用文件的md5值,然后遍历每个文件,比较下当前的md5值) http://blog.csdn.net/topasstem8/article/details/6551908 http://blog.chinaunix.net/uid-20613650-id-3269470.html

参考文章

http://www.netingcn.com/tag/mac-os-crontab

http://my.oschina.net/jackin/blog/263024

http://my.oschina.net/shede333/blog/470377

http://honglu.me/2014/09/20/OSX%E7%B3%BB%E7%BB%9F%E6%B7%BB%E5%8A%A0%E5%AE%9A%E6%97%B6%E4%BB%BB%E5%8A%A1/

https://developer.apple.com/library/mac/documentation/Darwin/Reference/ManPages/man5/launchd.plist.5.html

时间: 2024-12-13 18:37:31

MAC自动备份数据到服务器的相关文章

浅谈用expect实现路由器自动备份数据

在网络界瞎混这么多年,对路由器的认识一直很渣:功能强大的网络设备.支持强大OSPF.BGP.MPLS VPN等网络路由协议,却很少关注对它的日常运维.直到后来接触到linux,发现linux强大的脚本编程功能.学过linux之后再回来看路由器,特别是思科的IOS,顿悟:IOS就是尼玛的linux再次开发的,更确切的说应该叫它Unix-like. 既然,linux可以支持强大的脚本编程,如shell编程.python等实现系统的自动化监控.自动化执行任务,那作为unix-like的IOS路由器是否

谷歌云配置FTP主动模式,使用宝塔的FTP储存空间插件实现自动备份数据

最近谷歌云注册就送300刀,就撸了一个用来做数据备份,发现FTP使用flashfxp能连接上,但用宝塔的FTP储存空间插件就一直连接不上,按宝塔论坛的方法还是不管用(https://www.bt.cn/bbs/forum.php?mod=viewthread&tid=1903&extra=),后来发现是谷歌云的防火墙没设置导致的. [解决方法如下] 找到VPC网络--防火墙规则--新建防火墙规则 1.网络和优先级用默认 2.流量方向:入站 3.目标:网络中的所有实例(也可以自己指定) 4.

wordpressQQ邮件告警通知+Baidu网盘自动备份数据

1.邮箱设置 2.网盘设置 3.同步策略 前言:目前自建网址的需求越来越多,但是一些网站的维护和消息通知机制,一直不太适宜:所以本章基于QQ邮箱和百度网盘实现简单的邮箱告警和网盘同步,让我们更好的管理我们的个人网址 <h5 id=1>一.配置自动发送到QQ邮箱:</h5> 设置并取得 smtp.qq.com 的 使用 授权密码QQ首页或者网页登录到QQ邮箱点击设置选择账户设置一值下滑找到POP3样式的服务,然后开启服务短信验证身份 返回POP3默认密钥服务端详细配置 [[email

Android M 新特性——应用数据自动备份功能

一.功能介绍 Android m 的自动备份数据功能运用的是Android Backup Service,将数据备份到了google drive中.Android Backup Service其实在安卓2.2就已经有了.但一开始谷歌的备份服务并不是用来同步备份应用数据,而是为了方便用户可以在不同设备上获取到备份的数据.而现在,只要你的app数据发生变化,或者系统升级时,Android M的应用数据备份功能便会启动.所以应用可以随时恢复之前存储过的数据,即使是设备恢复过出厂设置或者更换了新的设备.

Linux定时备份数据到百度云盘

导读:如今的百度云盘免费容量都是2T了,即使把电脑上所有的东东都放上去,也还有大把的剩余空间.对于站长来说,是完全可以充分利用这些硬盘空间的,现在我们就用百度云盘来备份Linux服务器上的数据. 一直在想,要是百度云盘支持FTP多好,就可以实现Linux定时备份数据到百度云盘了.尤其在各云盘容量都达到T级后,更是有种浪费的感觉. 昨天无意间发现了一个脚本,可以实现Linux定时备份数据到百度云盘. 安装bpcs_uploader 虽然关于bpcs_uploader的教程不少,但都千篇一律.虽然网

mysql自动备份并上传至git仓库

自动备份 数据库备份的重要性再怎么强调也不为过.当你的操作出现差错,但又因为没有作备份导致数据无法还原时,你就能体会到“万念俱灰”的心情了. 数据库备份有多种形式,本文以我的个人网站数据库备份为例. 需求如下: 每天凌晨自动备份 将备份的文件自动上传至码云的个人私有仓库 实现方式很简单: 码云上新建私有仓库 服务器与码云建立SSH key的信任关系 通过crontab定时执行备份脚本 备份脚本: 定时任务: 通过以上设置,每天凌晨三点就会自动备份数据并推送到git仓库,以后就可以通过git的版本

MYSQL自动备份策略的选择与优劣点分析

目前流行几种备份方式:1.逻辑备份:使用mysql自带的mysqldump工具进行备份.备份成sql文件形式.优点:最大好处是能够与正在运行的mysql自动协同工作,在运行期间可以确保备份是当时的点,它会自动将对应操作的表锁定,不允许其他用户修改(只能访问).可能会阻止修改操作.sql文件通用方便移植.缺点:备份的速度比较慢.如果是数据量很多的时候.就很耗时间.如果数据库服务器处在提供给用户服务状态,在这段长时间操作过程中,意味着要锁定表(一般是读锁定,只能读不能写入数据).那么服务就会影响的.

MYSQL自动备份策略的选择与实践

目前流行几种备份方式: 1.逻辑备份:使用mysql自带的mysqldump工具进行备份.备份成sql文件形式.优点:最大好处是能够与正在运行的mysql自动协同工作,在运行期间可以确保备份是当时的点,它会自动将对应操作的表锁定,不允许其他用户修改(只能访问).可能会阻止修改操作.sql文件通用方便移植. 缺点:备份的速度比较慢.如果是数据量很多的时候.就很耗时间.如果数据库服务器处在提供给用户服务状态,在这段长时间操作过程中,意味着要锁定表(一般是读锁定,只能读不能写入数据).那么服务就会影响

MYSQL自动备份策略的选择与实践详解

目前流行几种备份方式: 1.逻辑备份:使用mysql自带的mysqldump工具进行备份.备份成sql文件形式. 优点:最大好处是能够与正在运行的mysql自动协同工作, 在运行期间可以确保备份是当时的点,它会自动将对应操作的表锁定,不允许其他用户修改(只能访问).可能会阻止修改操作.sql文件通用方便移植. 缺点:备份的速度比较慢.如果是数据量很多的时候.就很耗时间.如果数据库服务器处在提供给用户服务状态,在这段长时间操作过程中,意味着要锁定表(一般是读锁定,只能读不能写入数据).那么服务就会