手机浏览 RSS 2.0 订阅 膘叔的简单人生 , 腾讯云RDS购买 | 超便宜的Vultr , 注册 | 登陆
浏览模式: 标准 | 列表分类:Linux

git 如何处理大文件加入版本库

 在使用git做为版本库的时候,遇到一个问题,那就是超大文件无法上传。git我不仅仅是拿来做代码的备份,甚至一些文档,我也拿它来处理,所以这些带有图片的文档就让我很郁闷了。它们可是都有着30M左右,甚至更大。怎么办?

其实很简单,在项目的.git/config里加入:

XML/HTML代码
  1. [pack]  
  2. threads = 1  
  3. deltaCacheSize = 128m  
  4. packSizeLimit = 128m  
  5. windowMemory = 128m  
  6. [core]  
  7. packedGitLimit = 128m  
  8. packedGitWindowSize = 128m  
如果这个大小你觉得还不够。你还可以更调大一点。这回就没大事喽。

Tags: git

【转】建立SSH隧道(SSH端口转发)

虽然自己也常用ssh -D,ssh -l之类的操作,但毕竟没有详细的分析这些。事实上如果你要求不高,完全可以看文档。或者直接输入ssh也能够看到各个参数的含义。所以看到这篇讲说ssh隧道的。就转贴一下,毕竟它可以用来看一些国外资料。你懂的

原文地址是:http://www.xushulong.com/post/2012-08-04/40032371760

ssh隧道功能,也就是端口转发功能非常好用,可以实现一些代理功能或者是穿透内网功能。

ssh的端口转发(或者叫做隧道)命令分为三种:

本地:ssh -C -f -N -g -L listen_port:DST_Host:DST_port user@Tunnel_Host

远程:ssh -C -f -N -g -R listen_port:DST_Host:DST_port user@Tunnel_Host

动态:ssh -C -f -N -g -D listen_port user@Tunnel_Host

乍一看有点乱,仔细一分析就更蒙了-_-!  

但是再深入的分析了搜索出来的相关的说明和别人的一些分享之后,终于搞清楚了使用方法。下面详细的看各个参数的用法。

-L port:host:hostport

将本地机(客户机)的某个端口转发到远端指定机器的指定端口.

ssh -C -f -N -g -L listen_port:DST_Host:DST_port user@Tunnel_Host

以这个为例,在本地监听一个端口listen_port,把listen_port的所有数据通过Tunnel_Host全部转发到DST_Host:DST_port上去。

-R port:host:hostport

将远程主机(服务器)的某个端口转发到本地端指定机器的指定端口.

ssh -C -f -N -g -R listen_port:DST_Host:DST_port user@Tunnel_Host

远程端口转发,在Tunnel_Host上面监听一个端口 listen_port,listen_port的所有数据通过Tunnel_Host全部转发到DST_Host:DST_port上去。

DST_Host:DST_port是对于本机来说的,但却是通过Tunnel_Host来访问的,所以Tunnel_Host必须能访问到DST_Host:DST_port,才能进行转发。

举个例子:我在家里和公司各有一台电脑,均没有公网ip,不能互通,但是我有一个有公网ip的VPS,我的两台电脑都可以访问vps,但是vps不能访问我的两台电脑,然后通过公司电脑ssh到vps建立一条隧道,我在家里就可以访问公司里的电脑了。说起来罗嗦的不得了,但是做起来很容易:

在公司的电脑上:ssh -C -f -N -g -R 8080:127.0.0.1:80 root@vps的ip

然后在家里直接访问vps的8080端口,就相当与访问了公司电脑的80端口了,over。

当然80端口只是web端口,我们可以转发22或者3389端口,就可以远程控制公司的电脑了。

-D port

指定一个本地机器 “动态的'’ 应用程序端口转发. 这个动态的就简单了,

ssh -N -f -D 8000 登录名@我的vps的ip

就相当与在本机上开了一个sock代理,端口是8000,给浏览器挂上127.0.0.1:8000的代理,查一下本机ip,发现已经变成vps的ip了。

我的上面用的vps是ubuntu系统,有的时候做了远程端口转发之后发现不能从外面访问,需要修改一下vps上面ssh的一个配置,/etc/ssh/sshd_config,把这个改成yes,如果没这句就加上:

GatewayPorts yes

然后重启sshd。这个作用是把转发的端口绑定在0.0.0.0的接口上,让外部地址也可以访问。

还要注意一点就是listen_port必须是没有被使用的,不然会监听失败。

下面是几个辅助参数,看着乱的话可以忽略,用的时候按需加上就好了。

-C Enable compression.
压缩数据传输。

-f Fork into background after authentication.
后台认证用户/密码,通常和-N连用,不用登录到远程主机。

-N Do not execute a shell or command.
不执行脚本或命令,通常与-f连用。

-g Allow remote hosts to connect to forwarded ports.
在-L/-R/-D参数中,允许远程主机连接到建立的转发的端口,如果不加这个参数,只允许本地主机建立连接。

-p port Connect to this port. Server must be on the same port.
被登录的ssd服务器的sshd服务端口,省略就是默认的22端口。

Linux自动时间校准

VPS刚刚装好的时候,偶尔会有时间不准的情况,这时候其实可以可以用ntp来处理。但默认是没有安装这个程序的,所以在debian的系列里,直接apt-get install ntpdate 即可

然后运行:ntpdate cn.pool.ntp.org 

这时候,你再运行date,你就会发现时间是正确的了。OK,如果你担心时间偶尔还是会不准,比如你用的是虚拟机,经常不关机而是直接待机的话。时间可能不一定准 ,所以就需要这个了。

将:*/5 * * * * /sbin/ntpdate cn.pool.ntp.org 加入到crontab里,一切就安心了

小笔记。

 

为什么我的vps在重启后mysql都不能启动?

 为什么我的vps在重启后mysql都不能启动?带着这个问题,我看了很多信息,比如rc0.d/~rc6.d这些目录。一个个里面都有mysql的启动脚本。那为什么还是不能启动呢?

在vampire的提示下。看了:dmesg | grep mysql,结果返回空。

然后又运行了:cat /var/log/daemon.log,仔细翻了一下,居然发现了一条这个:

XML/HTML代码
  1. Nov  7 21:53:36 vpsname /etc/init.d/mysql[988]: ERROR: The partition with /var/lib/mysql is too full!  

咦。这是什么??怎么会满了?然后我ls -la /var/lib/mysql

我靠:

XML/HTML代码
  1. lrwxrwxrwx  1 mysql   mysql       29 Dec 10  2012 mysql -> /server/???/mysql/mysql/  

得,原来我mysql的存储是放在/server/盘下面,/server盘是什么?df -h看了一下:

XML/HTML代码
  1. /dev/xvdb              30G  3.7G   25G  14% /server  

原来是我挂载的硬盘啊。

于是我一下子心里就明白了。我在rc.local里写了一句:mount xxx xxxx,但是启动mysql在mount前面,所以。。。。

到这里我就明白了,要么。我在mount后面主动启动一下,要么我将/server的信息写到/etc/fastab里面。二选一。

我最终还是偷懒了。怎么做,我不告诉你们

 

 

 

 

 

Tags: vps, mysql

转:vps备份方案的选择--dropbox

最近在:http://mosir.org/ 的网站上发现一些好文章。比如这篇我要转的这篇。毕竟我现在用的就是VPS,用VPS的话,你也知道,最担心的是什么?有几点?

1、服务器的母机会突然挂掉(当然任何机器都会有这种情况)。怎么样快速转移,或者是有备份机?(小网站可能就是在等待了)

2、母机商跑路。这个嘛,在大家的VPS经历里还是会遇到过的。现在都是推荐选择大一点的供应商,比如virtualhost/linode/ovh等。我现在尽量不选择太便宜的,贵就贵一点,稳定。。。

3、备份,你总不能完全相信说服务器商对你说的,都是用的raid1服务器吧?总有万一的时候,这时候怎么办?

其实早些年都有一些脚本在网上流传,比如,mysql定时备份,自动发邮件到自己邮箱。(小网站都没问题,mysql最多也就上百M,每天增量的话,也没多少,就算全量,现在的mail其实也完全可以。大不了再压缩一下。大不了再切割一下,总能解决),对于代码什么的,现在都会想着是git发布/svn发布等,代码也能够保存在本地。然后附件直接存储到第三方。所有的就都解决了。但毕竟这样是存储在多个地方了。

于是这才是我转贴本文的原因,原文来自:http://mosir.org/html/y2012/use-dropbox-backup-vps.html

XML/HTML代码
  1. vps的定期备份是一件很必要的工作。大多数idc并没有提供免费的vps备份空间,这就需要我们自己来完成这个工作了。  
  2.   
  3. 一般情况下,得自己打包需要备份的数据,然后下载到本地,但这太麻烦。也有人通过lftp及脚本工具将需要备份的数据上传到某些ftp服务器上,但这也不稳妥。想找个稳妥的方法似乎只能出钱买备份空间了。  
  4.   
  5. 还好Dropbox提供了比较大的免费空间来让我们备份数据,申请了帐号后,只有2G空间,但可以很容易的扩展到20G左右,用来备份vps上的程序和数据也够了。如果需要更大的空间,可以考虑购买。  
  6.   
  7. 当然,靠谱的网盘有不少,但使用起来方便的并不多。这里就只考虑dropbox了。  
  8.   
  9. 在vps里的安装方法很简单,官方的说明在这里:https://www.dropbox.com/install?os=lnx  
  10.   
  11. 步骤如下:  
  12.   
  13. cd ~ && wget -O - "https://www.dropbox.com/download?plat=lnx.x86" | tar xzf -  
  14. 这会在vps服务器上当前用户目录下创建.dropbox-dist目录并解压所有所需文件。  
  15.   
  16. 接下来运行dropboxd  
  17.   
  18. ~/.dropbox-dist/dropboxd  
  19. 它会自动在用户目录下创建Dropbox目录。  
  20.   
  21. 然后你会看到不断出现类似这样的提示:  
  22.   
  23. This client is not linked to any account...  
  24. Please visit https://www.dropbox.com/clilink?hostid=6a57828b2191161aea851e72a48f8451&cl=en_US to link this machine.  
  25. 不要中断dropboxd的运行,将https://xxx链接复制出来,打开浏览器登录你的dropbox帐号,再把这个链接复制到浏览器打开,将vps机器加入到你的帐号中。  
  26.   
  27. 然后,有什么需要备份的打包后丢到~/Dropbox目录下即可。  
  28.   
  29. 因为dropboxd大约要占用2XM~1xxM的内存,所以同步完成后,按Ctrl-C中止其运行即可。  
  30.   
  31. 也就是说需要备份时运行dropboxd,备份完就中止它。  
  32.   
  33. 如果vps内存充足,也可以把它作为一个服务运行。可以下载官方的控制脚本:https://www.dropbox.com/download?dl=packages/dropbox.py,编辑rc.local,加入  
  34.   
  35. /yourpath/dropbox.py start  
  36. 这样,vps启动后就会自动运行dropbox,保证只要有新的备份文件被放到Dropbox目录就立即被同步到dropbox网络存储空间里去。  
  37.   
  38. 如果只希望同步dropbox目录下的某个子目录,或不希望同步某些子目录,可以自己参考修改dropbox.py,大约在1105行,这里有个排除列表的函数及使用说明。  
  39.   
  40. 完成。  
赞。过两天试试