精华内容
下载资源
问答
  • linux系统备份多个根文件系统

    千次阅读 2015-09-22 17:57:51
    linux系统备份多个文件系统在一些要求比较高的嵌入式系统中,要求做两个甚至三个系统,以防止在升级或者操作不当时候文件系统被损坏,从而这个设备就变砖啦。这个问题可以有两种比较好的方法解决。一是系统备份,...

    linux系统下备份多个文件系统

    在一些要求比较高的嵌入式系统中,要求做两个甚至三个系统,以防止在升级或者操作不当时候文件系统被损坏,从而这个设备就变砖啦。这个问题可以有两种比较好的方法解决。一是系统备份,也就是把根文件系统烧写到几个不同的分区,当一个分区损坏后,然后从备份的分区启动,这样可以有效的避免机器或者设备变砖,但是这也要求系统的存储要够大。二是在uboot里开发刷机程序,现在的android 手机基本上都支持,手持设备有这种方式还好,但是工业设备一般没有条件这样做,或者支持网口进入进行刷机,操作步骤有点繁琐。
    我们的设备对这些电子芯片的价格不是很敏感,所以选择了第一种方式。

    实现的功能

    uboot根据启动的版本需求,引导linux内核,挂载Flash中相应版本根文件系统。
    1) 能引导linux内核启动,挂载相应版本的根文件系统.
    Uboot启动时根据EEPROM中的启动的版本标识,启动内核后,挂载相应版本的根文件系统。
    2) 当前版本启动失败时,能自动回退到上一版本,上一版本无法启动时,继续退到原厂版本,原厂版本无法启动时则判断为设备损坏。
    Uboot启动内核时,读取EEPROM中的启动版本分区标识,挂载相应版本的根文件系统,上电次数在uboot中自加1,运行次数会在系统启动之后的应用程序中自加,如果系统上电次数和运行次数相差超过三次,即系统启动三次不成功,此时更新启动版本标识为上一版本,回退到上一版本,如果回退到原厂版本也不能启动,则判断为设备损坏,无法启动。


    运行环境

    本系统运行的硬件环境是ARM最小系统,ARM芯片为AT91SAM9G20,本系统在ARM上运行linux操作系统。

    EEPROM底层驱动开发简单说明

    eeprom是一款采用I2C通信技术的存储芯片,uboot底层没有支持I2C通信的接口,需要自己开发或者移植,主要增加的两个文件为u-boot-1.3.4\cpu\arm926ejs\at91sam9下的i2c.c文件与u-boot-1.3.4\include下的at91sam9_i2c.h文件,这两个文件实现了与底层硬件的I2C通信。
    实现了i2c_read()与i2c_write()两个函数的接口:
    1. I2c_read()—从i2c设备中读数据函数格式如下:
    int i2c_read (unsigned char chip, unsigned int addr, int alen,unsigned char *buffer, int len)
    chip:芯片的物理地址,传入时一般需要右移一位
    addr:内部存储器偏移地址
    alen:偏移地址的长度
    buffer:读出的数据存储区
    len: 读出数据的长度
    - 2. I2c_read()—从i2c设备中读数据函数格式如下:
    int i2c_write(unsigned char chip, unsigned int addr, int alen,unsigned char *buffer, int len)
    chip:芯片的物理地址,传入时一般需要右移一位
    addr:内部存储器偏移地址
    alen:偏移地址的长度
    buffer: 写入数据的存储区
    len: 写入数据的长度
    i2c_read()与i2c_write()可以实现挂载总线上的所有i2c设备的通信。直接调用就可以。在Cmd_eeprom.c里有两个eeprom_read()与eeprom_write()两个函数,打开相关的宏后也可以直接使用,实际上就是调用了i2c_read()与i2c_write()两个函数,功能一样。

    NandFlash 存储说明及规划

    NandFlash数据位宽为8位,容量是256MB,划分了六大存储区,bootstrap、uboot与ubootEnv占用了前2M的存储空间为mtdblock0;Kernel单独一个存储空间占用2M为mtdblock1;后面有三个根文件系统与FPGA镜像文件存储区分别是rootfs/fpga,、rootfs/fpga1、rootfs/fpga2,占用的存储块为mtdblock2、mtdblock3、mtdblock4。最后一个为data分区,没有使用。

    根据以上规划,kernel里的代码(在board-sam9g20ek.c文件里修改)分区更改如下:
    static struct mtd_partition __initdata ek_nand_partition[] = {
        {
            .name   = "Bootstrap/uboot/",
            .offset = 0,
            .size   = SZ_2M,
        },
           {
            .name   = "kernel",
            .offset = MTDPART_OFS_NXTBLK,
            .size   = SZ_2M,
        },
        {
            .name   = "rootfs/fpga",
            .offset = MTDPART_OFS_NXTBLK,
            .size   = 30*SZ_1M,
        },
    
        {
            .name   = "rootfs/fpga1",
            .offset = MTDPART_OFS_NXTBLK,
            .size   = 30*SZ_1M,
        },
        {
            .name   = "rootfs/fpga2",
            .offset = MTDPART_OFS_NXTBLK,
            .size   = 30 * SZ_1M,
        },
    
        {
            .name   = "data",
            .offset = MTDPART_OFS_NXTBLK,
            .size   = MTDPART_SIZ_FULL,
        },
    };
    

    参数传递

    在uboot里设置了3种CONFIG_BOOTARGS环境参数变量对应于kernel里的flash分区,默认配置参数为CONFIG_BOOTARGS,CONFIG_BOOTARGS1与CONFIG_BOOTARGS2为升级配置参数,它们只有根文件系统启动位置不同(mtdblock2、mtdblock3或者mtdblock4),其它参数配置一样。

    #define CONFIG_BOOTARGS  "mem=64M console=ttyS0,115200
    mtdparts=atmel_nand:2M(bootstrap/uboot/kernel)ro,2M(kernel)ro,\
    30M(rootfs/fpga), 30M(rootfs/fpga1),30M(rootfs/fpga2), -(data) root=/dev/mtdblock2 rw rootfstype=jffs2"
    #define CONFIG_BOOTARGS1 "mem=64M console=ttyS0,115200 mtdparts=atmel_nand:2M(bootstrap/uboot/kernel)ro,2M(kernel)ro,\
    30M(rootfs/fpga), 30M(rootfs/fpga1),30M(rootfs/fpga2), -(data) root=/dev/mtdblock3 rw rootfstype=jffs2"
    #define CONFIG_BOOTARGS2  "mem=64M console=ttyS0,115200 mtdparts=atmel_nand:2M(bootstrap/uboot/kernel)ro,2M(kernel)ro,\
    30M(rootfs/fpga), 30M(rootfs/fpga1),30M(rootfs/fpga2), -(data) root=/dev/mtdblock4 rw rootfstype=jffs2"

    功能实现

    在uboot启动时,读取版本信息,上电次数以及运行次数等各种参数来判别要设置的传递给内核的参数,实现了版本的启动选择以及回退等功能,功能实现的代码在board.c文件的start_armboot()函数里实现。
    通过setenv("bootargs", CONFIG_BOOTARGS2);来设置bootargs的环境变量,从而可以启动不同分区的系统。

    展开全文
  • 创建文件夹 mkdir -p /data/backdata mkdir -p /data/logs mkdir -p /data/mysqlbak ...创建文件touch backup.sh 编辑文件 vi backup.sh 添加下面的内容 DATE=$(date +%Y%m%d) /usr/local/mysql

    参考地址: https://www.cnblogs.com/blazeZzz/p/10881297.html

    创建文件夹

    mkdir -p /data/backdata

    mkdir -p /data/logs

    mkdir -p /data/mysqlbak

    进入文件夹

    cd /data/mysqlbak

    创建文件touch backup.sh

    编辑文件 vi backup.sh

    添加下面的内容

    DATE=$(date +%Y%m%d)

    /usr/local/mysql-5.7/bin/mysqldump -uroot -p123456 -h127.0.0.1 --databases reporting-system | gzip > /data/backdata/reporting_$DATE.sql.gz

    scp -r /data/backdata/reporting_$DATE.sql.gz root@192.168.153.130:/data/backdata/

    讲解:

    mysql 安装路径: /usr/local/mysql-5.7/bin/mysqldump

    uroot 数据库用户名 u+用户名

    p123456 密码 p+密码

    reporting-system 数据库名称

    /data/backdata/reporting_$DATE.sql.gz  本机文件存放的地址

    root@192.168.153.130:/data/backdata/ 远程服务器文件存放的地址

     

    进入到 backup.sh目录下执行

    设置脚本的执行权限

    chmod 777 backup.sh

    将备份操作加入到定时任务(每天凌晨2点定时执行)

    执行下面文件

    crontab -e

    将时间添加到文件里面保存,下面时间想每天晚上2点执行

    00 02 * * *  /data/mysqlbak/backup.sh > /data/logs/backup.log 2>&1

    查看执行定时任务

    crontab -l

    定时删除

    进入文件夹

    cd /data/mysqlbak

    创建文件 touch clean_backdata.sh

    编辑文件添加一下内容

    vi  clean_backdata.sh

    find /data/backdata/ -mtime +7 -name "*.gz" -exec rm -rf {} \;

    进入到 clean_backdata.sh目录下执行

    设置脚本的执行权限

    chmod 777 clean_backdata.sh

    执行:  crontab -e

    将时间添加到文件里面保存

    3 14 * * *  /data/mysqlbak/clean_backdata.sh > /data/logs//backup_full_clean.log 2>&1

    两台centos之间免密传输 scp

    参考地址: https://www.cnblogs.com/heiboy/p/11195222.html

    两台linux服务器之间免密scp,在A机器上向B远程拷贝文件

    操作步骤:1、在A机器上,执行ssh-keygen -t rsa,一路按Enter,不需要输入任何内容。(如有提示是否覆盖,可输入y后按回车)2、到/root/.ssh/目录下,查看是否有id_rsa.pub文件生成3、将A机器生成的id_rsa.pub文件拷贝到B机器的/root/.ssh/下,并将id_rsa.pub改名为authorized_keys(如果B机器已经有了authorized_keys,可以编辑,向下追加ssh-rsa内容即可)4、好了,现在就可以在A机器上通过scp -r /data/backdata/reporting_$DATE.sql.gz root@192.168.153.130:/data/backdata/ 命令进行免密远程拷贝了

     

    注意:1、A机器修改密码后,需要重新按上述步骤操作一遍2、复制的两台计算机需要用相同的账户名

    将文件从服务器a远程传输到服务器b上

    scp -r  id_rsa.pub root@192.168.153.130:/root/.ssh/

    远程服务器B

    修改名称为: mv id_rsa.pub authorized_keys

     

     

     

     

     

     

     

     

     

     

     

    展开全文
  • 现在我的文件系统泡在nandflash上,最近测试的时候发现有时候系统起不来,通过查看串口打印结果来看,是文件系统损坏了。 所以我想是否可以在nandflsh上多设立一个分区,如果第一个文件系统启动不了,能够自动...
  • Linux服务器文件备份到Windows系统

    千次阅读 2019-08-27 23:21:18
    我想备份文件在服务器上的路径是/home/dailh/Study,想把这个文件夹备份到Windows系统上的/backup文件夹(可以根据自己的需求更改)。我的配置文件如下所示: uid=root gid=root max connections=10 use chroot...

    环境:
    Ubuntu 16.04
    Windows10

    作为一个科研?,学会备份是基本常识。

    首先两台机器都要安装rsync,命令如下:

    sudo apt-get install rsync
    

    按理说,Windows肯定不可以直接运行上面那条命令的。但是Windows越来越想包含Ubuntu,所以要推荐一个神奇的软件,Ubuntu。直接在Windows应用商店装就可以啦。
    在这里插入图片描述
    最后打开Ubuntu软件就是这样:
    这里的c d f g就是我的硬盘。
    在这里插入图片描述

    备份流程

    说正经的,备份流程如下:

    1. 新建配置文件
     sudo vim /etc/rsyncd.conf
    
    1. 我想备份的文件在服务器上的路径是/home/dailh/Study,想把这个文件夹备份到Windows系统上的/backup文件夹(可以根据自己的需求更改)。我的配置文件如下所示:
    uid=root
    gid=root
    max connections=10     
    use chroot=no
    log file=/var/log/rsyncd.log
    pid file=/var/run/rsyncd.pid
    lock file=/var/run/rsyncd.lock
    
    [dailh]
    path=/home/dailh/Study/
    comment=backup
    ignore errors
    read only = no
    hosts allow=*
    
    1. 开启rsync服务
     sudo rsync --daemon --config=/etc/rsyncd.conf
    
    1. 客户端配置较简单,可以开始备份了:
      假设192.168.0.195是服务器的ip地址
    rsync -avz --bwlimit=30000 root@192.168.0.195::dailh /backup/
    

    好啦,备份就开始啦

    点击我参考的[博客]有更详细的介绍~~~(http://www.zphj1987.com/2015/03/22/%E7%94%A8rsync%E5%A4%87%E4%BB%BD%E4%B8%80%E5%8F%B0linux%E6%9C%8D%E5%8A%A1%E5%99%A8%E4%B8%8A%E7%9A%84%E6%95%B0%E6%8D%AE/)

    展开全文
  • 使用7z在Linux系统压缩备份文件

    千次阅读 2016-03-29 14:24:29
    使用7z在Linux系统压缩备份文件

    Linux系统可以使用zip、tar、7z等工具压缩和备份文件。

    经过测试,使用tar和7z配合压缩是目前压缩比例最高的方式,可以显著的减少压缩耗费时间和压缩后的文件尺寸。

    使用7z在Linux系统压缩备份文件命令如下

    tar cf - directory | 7za a -si directory.tar.7z

    由于使用了管道,比单纯用tar -cjvf 压缩tar.bz2格式的能更好使用多核CPU(2核),因此压缩速度也更快一些。

    解压缩命令

    7za x -so directory.tar.7z | tar xf -

    经过测试,压缩Android系统源码,压缩出的.tar.7z格式比.tar.bz2格式,节省约20%的磁盘空间。
    展开全文
  • Linux xfs 文件系统备份与恢复

    千次阅读 2016-10-20 23:04:57
    我在本地虚拟机建了一个centos系统,自带的文件系统格式是xfs的。如果遇到文件被删,该如何备份,以及还原呢?且往下看。安装xfsdump用下面的命令先按照下xfsdump 工具,如果已经存在了,那就跳过这一步yum install ...
  • linux文件备份到windows上

    千次阅读 2017-12-05 10:51:27
    主要内容 备份linux主机内容到windows机器上 例子代码 备份linux 使用tar备份的主要特点 全量与增量 清理历史备份文件 备份文件的转移 恢复linux
  • Linux文件备份--cp

    千次阅读 2018-11-13 18:38:16
    Linux文件备份--cp
  • Linux 系统文件权限的备份与恢复

    千次阅读 2015-05-06 12:23:22
    说一下Linux 上如何批量备份和恢复权限以便在`chmod` 灾难后及时修复系统。纯粹是看CSDN 能用MD 写博客了,试试效果。
  • Linux —— 文件备份与压缩

    千次阅读 2017-11-23 14:10:27
    gzip 是在 Linux 系统中经常使用的一个对文件进行压缩和解压缩的命令 减少文件大小有两个明显的好处,一是可以减少存储空间,二是通过网络传输文件时,可以减少传输的时间。 二、gzip 命令的语法及选项 语法: ...
  • suse linux 文件目录备份和恢复

    千次阅读 2017-02-05 14:11:16
    Linux上可以用tar命令将某个文件系统上的文件或者目录备份到一个归档文件中,在需要恢复时从此归档 文件进行恢复。例如:在某个用户系统中/home使用单独的文件系统,需要将/home文件系统备份,可以运行下面的 ...
  • linux常用文件备份命令:tar,cp

    万次阅读 多人点赞 2018-08-14 11:02:55
    -r:向压缩归档文件末尾追加文件 -u:更新原压缩包中的文件 这五个是独立的命令,压缩解压都要用到其中一个,可以和别的命令连用但只能用其中一个。 下面的参数是根据需要在压缩或解压档案时可选的。 -z:有gzip...
  • Linux系统备份

    千次阅读 2014-05-08 17:36:55
    Linux系统备份
  • 实验要求 1、利用C语言函数fopen()...2、利用Linux操作系统系统调用函数open(), read(), write(), close() 来实现简单的文件备份, 即将一个文件的内容拷贝到另一个文件中去。 代码 c语言 #include <stdio.h>...
  • linux文件备份

    千次阅读 2018-04-10 16:59:44
    1、rsync与传统的cp、tar备份方式相比,rsync具有安全性高、备份迅速、支持增量备份等优点,通过rsync可以解决对实时性要求不高的数据备份需求,例如定期的备份文件服务器数据到远端服务器,对本地磁盘定期做数据...
  • 简单linux命令之备份文件

    万次阅读 2017-11-13 23:04:20
    linux,sh,服务器备份文件
  • linux系统GHOST备份方案

    万次阅读 2007-10-12 08:53:00
    Windows系统备份可以用ghost工具软件完成,Linux系统不能完全依赖于ghost工具,一则是ghost本身是有版权的软件,二则ghost只支持ext2、ext3文件系统的Linux分区,不支持reiserfs、xfs等比较高级的文件系统,ghost...
  • Linux系统下的文件自动备份到Windows下 1 linux服务器上安装ftp服务端软件 #wget http://mirror.centos.org/centos-6/6.3/os/x86_64/Packages/vsftpd-2.2.2-11.el6.x86_64.rpm #rpm -ivh vsftpd-2.2.2-11.el6....
  • linux系统备份与还原

    千次阅读 2018-12-06 10:39:09
    如果你备份过Windows系统,那么你一定记忆犹新:首先需要找到一个备份工 具(通常都是私有软件),然后重启电脑进入备份工具提供的软件环境,在这里备份或者恢复Windows系统。Norton Ghost是备份Windows系统时经常使用...
  • 整个linux系统备份和还原的方法

    万次阅读 2015-11-22 20:54:04
    作为一个菜鸟,在接触Linux的过程中,经常...a)可以直接通过tar对整个文件系统('/‘)进行备份,但是有几点需要注意: i. 不能备份以下几个文件(目录) 1. 当前压缩文件 2. /proc文件夹 3. /lost+found文件夹 4.
  • Linux 备份及恢复 Linux 文件权限

    千次阅读 2017-01-16 17:03:55
    在日常管理中,我们有许多工具可以用来备份文件权限,如cp、rsync、etckeeper等。如果你使用了这个备份工具,那么你的确不需要担心改变的文件权限问题。但如果只是想暂时备份文件权限(而不是文件本身),例如:为了...
  • linux 文件备份与还原

    千次阅读 2014-01-19 20:48:52
    注意:备份只能是某个文件系统(filesystem),如果一个目录下面有多个文件系统,那么需要把这几个文件系统备份备份前需要先df -h文件系统对应的路径,然后查看您的文件在那个文件系统下,然后备份这个文件...
  • 三分钟速学分linux文件备份压缩

    千次阅读 多人点赞 2020-04-26 18:38:52
    备份压缩命令一、linux常见压缩文件扩展名说明二、tar命令 – 打包和备份的归档工具三、gzip命令 – 压缩和解压文件四、bzip2命令 – bz2文件的压缩程序五、 环境说明: 博客使用的linux版本:CentOS Linux release ...
  • linux系统备份及还原

    万次阅读 多人点赞 2019-02-20 16:37:16
    备份系统 1.先切换到root用户 sudo su 2.进入根目录 3.查看磁盘情况 df -h 4.进行压缩 tar cvpzf backup.tgz --exclude=/proc --exclude=/lost+found --exclude=/backup.tgz --exclude=/mnt --exclude=/sys / ...
  • 介绍:xfs文件系统的备份,第一次备份为level 0是完整备份,以后的备份是增量备份,增量备份是:例如备份第二次level 1会和level 0比较后,将与level 0不同的文件备份过来。(各个level记录在/var/lib/xfsdump/...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 239,424
精华内容 95,769
关键字:

linux系统文件备份

linux 订阅