(806) 575-7803

一、编写脚本

vim bak_file.sh
#!/bin/sh
#创建一个存放备份文件的目录
mkdir -p /storage/bak
#把需要备份的文件或目录复制到存放备份文件的目录
cp -r /storage/mysql /storage/bak
#对目录或文件进行打包
tar -zcPvf /storage/bak/backup-$(date +%Y%m%d).tar.gz /storage/bak/mysql
#删除复制过来的目录或文件
rm -rf /storage/bak/mysql
#删除超过30天的文件
find ./ -mtime +30 -name "*.tar.gz" -exec rm -rf {} \;

直接运行此脚本进行手动备份

二、设置定时执行此脚本

1. 安装crond

如果没有安装crond服务就先装上服务。检查服务状态:

service crond status

centos安装

yum install cronie

ubuntu安装

apt install incron

2. 修改crontab内容

输入命令:

crontab -e

进入后继续输入命令:

0 0 */7 * * bak_file.sh所在的全路径

设置为每7天执行一次脚本文件
然后,保存退出:wq

sh脚本前面五个字段分别表示分钟(0-59)、小时(0-23)、日(1-31)、月(0-12)、星期几(0-6)后面的为脚本所在目录

3. 重新启动crond服务

systemctl restart crond

encage

NDK下载

选择稳定版的r16b下载,进行解压[到当前目录]

unzip android-ndk-r16b-linux-x86_64.zip

FFmpeg下载

选择ffmpeg-4.0.2.tar.bz2下载,进行解压[到当前目录]

tar -jxvf ffmpeg-4.0.2.tar.bz2

也可使用命令

git clone /git.ffmpeg.org/ffmpeg.git ffmpeg

配置configure [位于ffmpeg-4.0.2文件夹]

注释掉

# SLIBNAME_WITH_MAJOR='$(SLIBNAME).$(LIBMAJOR)'
# LIB_INSTALL_EXTRA_CMD='$$(RANLIB) "$(LIBDIR)/$(LIBNAME)"'
# SLIB_INSTALL_NAME='$(SLIBNAME_WITH_VERSION)'
# SLIB_INSTALL_LINKS='$(SLIBNAME_WITH_MAJOR) $(SLIBNAME)'

更改为

SLIBNAME_WITH_MAJOR='$(SLIBPREF)$(FULLNAME)-$(LIBMAJOR)$(SLIBSUF)'  
LIB_INSTALL_EXTRA_CMD='$$(RANLIB)"$(LIBDIR)/$(LIBNAME)"'  
SLIB_INSTALL_NAME='$(SLIBNAME_WITH_MAJOR)'  
SLIB_INSTALL_LINKS='$(SLIBNAME)'

使用android-ndk-r16b编译FFmpeg4.0.2

编译脚本build.sh [放入ffmpeg根目录]

#!/bin/bash
# ndk环境[ndk解压的全路径]
export NDK=/usr/local/ndk
export SYSROOT=$NDK/platforms/android-21/arch-arm
export TOOLCHAIN=$NDK/toolchains/arm-linux-androideabi-4.9/prebuilt/linux-x86_64
CPU=armv7-a

ISYSROOT=$NDK/sysroot
ASM=$ISYSROOT/usr/include/arm-linux-androideabi

# 要保存动态库的目录,这里保存在源码根目录下的android/armv7-a
export PREFIX=$(pwd)/android/$CPU
ADDI_CFLAGS="-marm"

function build_android
{
echo "开始编译ffmpeg"
./configure \
--target-os=linux \
--prefix=$PREFIX \
--enable-cross-compile \
--enable-shared \
--disable-static \
--disable-doc \
--disable-ffmpeg \
--disable-ffplay \
--disable-ffprobe \
--disable-avdevice \
--disable-doc \
--disable-symver \
--cross-prefix=$TOOLCHAIN/bin/arm-linux-androideabi- \
--arch=arm \
--sysroot=$SYSROOT \
--extra-cflags="-I$ASM -isysroot $ISYSROOT -D__ANDROID_API__=21 -U_FILE_OFFSET_BITS -Os -fPIC -DANDROID -Wno-deprecated -mfloat-abi=softfp -marm" \
--extra-ldflags="$ADDI_LDFLAGS" \
$ADDITIONAL_CONFIGURE_FLAG
make clean
make
make install

echo "编译结束!"
}

build_android
chmod +x build.sh
./build.sh

输出目录在当前目录的 android/armv7-a 文件夹下

注意:

make: *** [libavcodec/aaccoder.o] Error 1

make: *** [libavcodec/hevc_mvs.o] Error 1

make: *** [libavcodec/opus_pvq.o] Error 1

很有可能是ffmpeg中的变量名与ndk中的宏定义冲突

使用 vim ndk安装目录/sysroot/usr/include/asm-generic/termbits.h

把 #define B0 0000000 注释掉之后再运行