通过ffmpeg转换为MP3文件,并通过attr(setfattr/getfattr)、rsync在服务器间传送extra info

sh/bash/dash/ksh/zsh等Shell脚本
回复
anffernee
帖子: 49
注册时间: 2008-07-01 23:07

通过ffmpeg转换为MP3文件,并通过attr(setfattr/getfattr)、rsync在服务器间传送extra info

#1

帖子 anffernee » 2021-09-28 21:59

/*
**转换成MP3格式后,传送到远程某服务器**
--第一个传入的参数为需要被转换的视频文件名
--第二个传入的参数为会被通过setfattr设置为user.name的值的,且将来会被作为软链接名称的字符串
--转换后的MP3文件在被setfattr添加extra info后,通过rsync保留添加的信息后传送至远端服务器上
*/
#!/usr/bin/bash
ffmpeg -i "$1" -vn -ar 22050 -ac 1 -ab 96 -f mp3 "$1.mp3";
setfattr -n "user.name" -v "$2" "$1.mp3";
rsync -e "ssh" -aq -A -X --delete "$1.mp3" username@remote-server:/home/username/_watch_/

/*
**通过读取已设定的extra info来生成软链接**
--设置_watch_/目录是为了方便采用crontab监测并自动转移后再生成软链接
--第一个传入参数是需要寻找文件的目录,且只有一个参数
--每次仅处理_watch_/目录下的一个文件
--上述文件必须之前为已经通过setfattr命令设定过user.name的值,该值将作为软链接的名称
--上述文件将被移动到第一个传入参数所指向的目录中,并作为软链接的目标文件
--最后将输出生成的软链接信息等
*/
#!/usr/bin/bash
watchd="_watch_/"
filen=`ls "$1$watchd" -1 | tail -n 1`
if [ "$filen" = "" ];then
echo "no new file(s)"
exit
fi
linkn=`getfattr --absolute-names --only-values "$1$watchd$filen"`
if [ "$linkn" = "" ]; then
echo "$filen"
echo "no extra info"
exit
fi
mv "$1$watchd$filen" "$1"
wwwd="/var/www/html/"
echo "$wwwd$linkn"
echo "$1$filen"
ln -s "$1$filen" "$wwwd$linkn"
ls -lh "$wwwd$linkn"
回复