質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.35%
cron

cronは、Unix系OS上でデーモンプロセスとして動作する、スクリプトの自動実行が可能なジョブスケジューラです。

バックアップ

バックアップとは、保存データやプログラムの複製を異なる記録装置などへ保存することを言います。バックアップを取っておくことで、機器のトラブルでデータが損傷するなどの不測の事態にもデータを複製することが可能です。

Linux

Linuxは、Unixをベースにして開発されたオペレーティングシステムです。日本では「リナックス」と呼ばれています。 主にWebサーバやDNSサーバ、イントラネットなどのサーバ用OSとして利用されています。 上位500のスーパーコンピュータの90%以上はLinuxを使用しています。 携帯端末用のプラットフォームAndroidは、Linuxカーネル上に構築されています。

バージョン管理

バージョン管理はコンピューター上にファイルとして格納されているドキュメント・プログラム・その他の情報の変更履歴等を管理するものです

sh

shは、UNIX系OSのシェル操作の1つであり、最も基本的なシェルのことです。

Q&A

解決済

1回答

2519閲覧

CentOS8でShellを使ったバックアップを取る方法

mayuneco222

総合スコア12

cron

cronは、Unix系OS上でデーモンプロセスとして動作する、スクリプトの自動実行が可能なジョブスケジューラです。

バックアップ

バックアップとは、保存データやプログラムの複製を異なる記録装置などへ保存することを言います。バックアップを取っておくことで、機器のトラブルでデータが損傷するなどの不測の事態にもデータを複製することが可能です。

Linux

Linuxは、Unixをベースにして開発されたオペレーティングシステムです。日本では「リナックス」と呼ばれています。 主にWebサーバやDNSサーバ、イントラネットなどのサーバ用OSとして利用されています。 上位500のスーパーコンピュータの90%以上はLinuxを使用しています。 携帯端末用のプラットフォームAndroidは、Linuxカーネル上に構築されています。

バージョン管理

バージョン管理はコンピューター上にファイルとして格納されているドキュメント・プログラム・その他の情報の変更履歴等を管理するものです

sh

shは、UNIX系OSのシェル操作の1つであり、最も基本的なシェルのことです。

0グッド

0クリップ

投稿2021/04/12 03:25

編集2021/04/12 04:38

前提・実現したいこと

CentOS8でshファイルとcronを使った自動バックアップを作りたいが、
完成したファイル内が大量のフォルダ状態になってしまうので、
バックアップ対象フォルダのみにする方法が知りたい。

また、実行時にエラーが出るので、解決したい。

発生している問題

このqiitaの投稿のようにshファイルを作成した。
https://qiita.com/abgata20000/items/290612617469eaeeb68d

すると、バックアップはできるのだが、
tarファイル内がフルパスフォルダのパス構成のままになる。

希望の構成

/home/user/folder というパスのnewフォルダにあるファイルのみを、
backup_yymmddhhmmss.tar.gzという名前でバックアップしたい。
*圧縮フォルダ内はnewフォルダのみにしたい。

今の状況:
backup_yymmddhhmmss.tar.gzという名前で圧縮フォルダは作れている。
ただし圧縮フォルダ内が、/home/user/folder/new というフォルダ構成になっている。

エラーメッセージ

エラーではないと思うのだが、実行時にこの表示が出る。

tar -zcvf $dirpath/$filename -C / $backupfolder
tar -zcvf $dirpath/$filename $backupfolder
※バックアップコマンドをどちらにしても出る。

tar: メンバ名から先頭の `/' を取り除きます

該当のソースコード

sh

1#!/bin/bash 2# バックアップファイルを何日分残しておくか 3period='+24' 4 5# バックアップファイルを保存するディレクトリ 6dirpath='/home/user/backup' 7 8#バックアップ元フォルダ 9backupfolder="/home/user/folder/new" 10 11# ファイル名を定義(名前と年月日時分をファイル名にする) 12mydate=`date +%y%m%d%H%M%S` 13filename=$target"datebkup_$mydate.tar.gz" 14 15#backup実行 16tar -zcvf $dirpath/$filename $backupfolder 17 18# パーミッション変更 19chmod 700 $dirpath/$filename 20 21# 古いバックアップファイルを削除 22find $dirpath -type f -daystart -mtime $period -exec rm {} \; 23

試したこと

バックアップ実行のコマンドを変えてみたが、どちらも同じ結果だった。

tar -zcvf $dirpath/$filename -C / $backupfolder
tar -zcvf $dirpath/$filename $backupfolder

回答いただいた
tar -zcvf $dirpath/$filename new -C $backupfolder
では、エラーが表示される。

sh

1tar: The following options were used after any non-optional arguments in archive create or update mode. These options are positional and affect only arguments that follow them. 2Please, rearrange them properly. 3tar: -C `/home/user/folder/new' has no effect

補足情報

補足などあればここに記載します。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

-C のディレクトリ変更オプションは、コマンドの先頭に付ける場合は

shell

1$ tar -C パス -zcvf 作成するアーカイブ名 バックアップするもの

です。

今回のご質問では new をパス無しでアーカイブされたいのであれば、直接コマンドを実行する場合は、このようなコマンドになります。

shell

1$ tar -C /home/user/folder/ -zcvf /home/user/backup/hoo.tar.gz new

シェルスクリプトでは $backupfolder として new も含めていますが、こちらのコマンドのように書き換えれば動作します。ただし、 new ディレクトリが作成されていませんとエラーになりますので、ディレクトリが無い可能性があれば、さらに1つの上のディレクトリを -C で指定します。

投稿2021/04/12 04:06

編集2021/04/12 04:53
zembutsu

総合スコア1584

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

mayuneco222

2021/04/12 04:33

回答ありがとうございます。 ご指定の通り tar -zcvf $dirpath/$filename new -C $backupfolder としたところ、 tar: new: stat 不能: そのようなファイルやディレクトリはありません tar: The following options were used after any non-optional arguments in archive create or update mode. These options are positional and affect only arguments that follow them. Please, rearrange them properly. tar: -C `/home/user/folder/new' has no effect というふうに表示されてしまうのです。
zembutsu

2021/04/12 04:53

コメントを受けまして、そのままでは動かないため、書き直しました。こちらでいかがでしょうか。
mayuneco222

2021/04/12 05:21

正常に作動しました!ありがとうございます!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.35%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問