我编写了一个脚本,它使用rsync运行备份,并将rsync的输出插入到数据库中。 除了一件小事之外,它运作良好。 DB中的文本是一行,没有“新行”空格或制表符。但是,如果我将查询写入屏幕,那很好。它在db cell中看起来我想要的东西。
任何人都可以帮忙解决这个问题吗?
这是脚本:
#!/bin/bash
DATUM=$(date +%Y-%m-%d)
IDO=$(date +%H:%M:%S)
LOG_FAJL="/media/2TB/MENTES_PC/log/"$DATUM"_"$IDO"_rsync_2TB.log"
LOG_FAJL_SED="/media/2TB/MENTES_PC/log/"$DATUM"_"$IDO"_rsync_2TB_SED.log"
CEL="/media/BACKUP_2TB/"
FORRAS="/media/2TB/"
KIZARAS1="--exclude='/media/2TB/lost+found/'" -- exclude='/media/2TB/.Trash-1000/'
DB_USER="user"
DB_PASSWORD="secret"
DB="xx"
TABLA="table"
if [ ! -f "$LOG_FAJL" ];
then
printf "%b" "\\\\n\\n\\t\\t\\t\\t\\t\\t\\t\\t##########################################" > "$LOG_FAJL" # more fancy header...
fi
printf "%b" "\\n\\n\\n A mentés készült: $(date +%Y-%m-%d_%H:%M:%S) \\n" >> "$LOG_FAJL"
printf "%b" " *************************************\\n" >> "$LOG_FAJL"
KEZDES=$(date +%s)
printf "%b" "\\n "$FORRAS" mentése ide: "$CEL >> "$LOG_FAJL"
printf "%b" "\\n ==========================================\\n\\n" >> "$LOG_FAJL"
rsync -azvh --delete "$KIZARAS1" --stats --human-readable $FORRAS $CEL >> "$LOG_FAJL"
VEGE=$(date +%s)
ELTELT=$(($VEGE-$KEZDES))
printf "%b" "\\n\\n A mentés tartott: " >> "$LOG_FAJL"
printf "%02dh:%02dm:%02ds" "$(($ELTELT/3600))" "$(($ELTELT%3600/60))" "$(($ELTELT%60))" >> "$LOG_FAJL"
printf "%b" "-ig\\n ********************************" >> "$LOG_FAJL"
cat "$LOG_FAJL" | sed "s/'/\\\'/g" > "$LOG_FAJL_SED"
QUERY="INSERT INTO "$TABLA" (datum,ido,log) VALUES ('"$DATUM"','"$IDO"','"$(cat "$LOG_FAJL_SED")"');"
echo "$QUERY"
mysql -u$DB_USER -p$DB_PASSWORD $DB -e "$QUERY"
答案 0 :(得分:0)
很奇怪您使用什么应用程序来查看插入的数据,Mysql Workbench,Squirrel等?
我怀疑新行/回车实际上是存在的,只是该应用没有显示它们。
您可以使用mysqldump将数据提取到文件中,并查看换行符是否在输出中。