backup-ssh 4.1.10 → 4.4.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (48) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +10 -6
  3. data/lib/backup.rb +3 -0
  4. data/lib/backup/config/dsl.rb +2 -2
  5. data/lib/backup/database/mongodb.rb +2 -1
  6. data/lib/backup/database/mysql.rb +2 -2
  7. data/lib/backup/database/postgresql.rb +1 -1
  8. data/lib/backup/model.rb +26 -1
  9. data/lib/backup/notifier/base.rb +30 -0
  10. data/lib/backup/notifier/campfire.rb +1 -7
  11. data/lib/backup/notifier/command.rb +102 -0
  12. data/lib/backup/notifier/datadog.rb +11 -20
  13. data/lib/backup/notifier/flowdock.rb +6 -5
  14. data/lib/backup/notifier/hipchat.rb +33 -8
  15. data/lib/backup/notifier/http_post.rb +2 -7
  16. data/lib/backup/notifier/mail.rb +26 -15
  17. data/lib/backup/notifier/nagios.rb +3 -8
  18. data/lib/backup/notifier/prowl.rb +8 -9
  19. data/lib/backup/notifier/pushover.rb +1 -7
  20. data/lib/backup/notifier/ses.rb +19 -8
  21. data/lib/backup/notifier/slack.rb +4 -10
  22. data/lib/backup/notifier/twitter.rb +1 -7
  23. data/lib/backup/notifier/zabbix.rb +1 -6
  24. data/lib/backup/package.rb +4 -0
  25. data/lib/backup/packager.rb +8 -2
  26. data/lib/backup/storage/base.rb +15 -3
  27. data/lib/backup/storage/cycler.rb +24 -14
  28. data/lib/backup/storage/dropbox.rb +0 -24
  29. data/lib/backup/storage/ftp.rb +15 -1
  30. data/lib/backup/storage/qiniu.rb +65 -0
  31. data/lib/backup/storage/s3.rb +3 -2
  32. data/lib/backup/syncer/rsync/base.rb +7 -1
  33. data/lib/backup/version.rb +1 -1
  34. data/templates/cli/databases/mongodb +1 -1
  35. data/templates/cli/notifiers/command +32 -0
  36. data/templates/cli/notifiers/hipchat +1 -0
  37. data/templates/cli/notifiers/mail +3 -0
  38. data/templates/cli/storages/dropbox +1 -0
  39. data/templates/cli/storages/ftp +1 -0
  40. data/templates/cli/storages/local +1 -0
  41. data/templates/cli/storages/qiniu +12 -0
  42. data/templates/cli/storages/s3 +2 -0
  43. data/templates/cli/storages/scp +1 -0
  44. data/templates/cli/storages/sftp +1 -0
  45. metadata +79 -46
  46. data/LICENSE.md +0 -24
  47. data/lib/backup/storage/ninefold.rb +0 -74
  48. data/templates/cli/storages/ninefold +0 -9
@@ -0,0 +1,65 @@
1
+ # encoding: utf-8
2
+ require 'qiniu'
3
+
4
+ module Backup
5
+ module Storage
6
+ class Qiniu < Base
7
+ include Storage::Cycler
8
+ class Error < Backup::Error; end
9
+
10
+ ##
11
+ # Qiniu API credentials
12
+ attr_accessor :access_key, :secret_key
13
+
14
+ ##
15
+ # Qiniu bucket name
16
+ attr_accessor :bucket
17
+
18
+ def initialize(model, storage_id = nil)
19
+ super
20
+
21
+ @path ||= 'backups'
22
+
23
+ check_configuration
24
+ config_credentials
25
+ end
26
+
27
+ private
28
+ def transfer!
29
+ package.filenames.each do |filename|
30
+ src = File.join(Config.tmp_path, filename)
31
+ dest = File.join(remote_path, filename)
32
+ Logger.info "Storing '#{ dest }'..."
33
+
34
+ ::Qiniu.upload_file(uptoken: ::Qiniu.generate_upload_token,
35
+ bucket: bucket,
36
+ file: src,
37
+ key: dest)
38
+ end
39
+ end
40
+
41
+ # Called by the Cycler.
42
+ # Any error raised will be logged as a warning.
43
+ def remove!(package)
44
+ Logger.info "Removing backup package dated #{ package.time }..."
45
+ remote_path = remote_path_for(package)
46
+ package.filenames.each do |filename|
47
+ ::Qiniu.delete(bucket, File.join(remote_path, filename))
48
+ end
49
+ end
50
+
51
+ def check_configuration
52
+ required = %w{ access_key secret_key bucket }
53
+
54
+ raise Error, <<-EOS if required.map {|name| send(name) }.any?(&:nil?)
55
+ Configuration Error
56
+ #{ required.map {|name| "##{ name }"}.join(', ') } are all required
57
+ EOS
58
+ end
59
+
60
+ def config_credentials
61
+ ::Qiniu.establish_connection!(access_key: access_key, secret_key: secret_key)
62
+ end
63
+ end
64
+ end
65
+ end
@@ -58,6 +58,7 @@ module Backup
58
58
  # Supported values:
59
59
  #
60
60
  # - :standard (default)
61
+ # - :standard_ia
61
62
  # - :reduced_redundancy
62
63
  #
63
64
  # Default: :standard
@@ -143,10 +144,10 @@ module Backup
143
144
  #encryption must be :aes256 or nil
144
145
  EOS
145
146
 
146
- classes = ['STANDARD', 'REDUCED_REDUNDANCY']
147
+ classes = ['STANDARD', 'STANDARD_IA', 'REDUCED_REDUNDANCY']
147
148
  raise Error, <<-EOS unless classes.include?(storage_class.to_s.upcase)
148
149
  Configuration Error
149
- #storage_class must be :standard or :reduced_redundancy
150
+ #storage_class must be :standard or :standard_ia or :reduced_redundancy
150
151
  EOS
151
152
  end
152
153
 
@@ -8,12 +8,14 @@ module Backup
8
8
  ##
9
9
  # Additional String or Array of options for the rsync cli
10
10
  attr_accessor :additional_rsync_options
11
+ attr_accessor :archive
11
12
 
12
13
  def initialize(syncer_id = nil, &block)
13
14
  super
14
15
  instance_eval(&block) if block_given?
15
16
 
16
17
  @path ||= '~/backups'
18
+ @archive = @archive.nil? ? true : @archive
17
19
  end
18
20
 
19
21
  private
@@ -21,7 +23,7 @@ module Backup
21
23
  ##
22
24
  # Common base command for Local/Push/Pull
23
25
  def rsync_command
24
- utility(:rsync) << ' --archive' << mirror_option << exclude_option <<
26
+ utility(:rsync) << archive_option << mirror_option << exclude_option <<
25
27
  " #{ Array(additional_rsync_options).join(' ') }".rstrip
26
28
  end
27
29
 
@@ -29,6 +31,10 @@ module Backup
29
31
  mirror ? ' --delete' : ''
30
32
  end
31
33
 
34
+ def archive_option
35
+ archive ? ' --archive' : ''
36
+ end
37
+
32
38
  def exclude_option
33
39
  excludes.map {|pattern| " --exclude='#{ pattern }'" }.join
34
40
  end
@@ -1,5 +1,5 @@
1
1
  # encoding: utf-8
2
2
 
3
3
  module Backup
4
- VERSION = '4.1.10'
4
+ VERSION = '4.4.0'
5
5
  end
@@ -6,7 +6,7 @@
6
6
  db.username = "my_username"
7
7
  db.password = "my_password"
8
8
  db.host = "localhost"
9
- db.port = 5432
9
+ db.port = 27017
10
10
  db.ipv6 = false
11
11
  db.only_collections = ["only", "these", "collections"]
12
12
  db.additional_options = []
@@ -0,0 +1,32 @@
1
+ ##
2
+ # Command [Notifier]
3
+ #
4
+ notify_by Command do |cmd|
5
+ cmd.on_success = true
6
+ cmd.on_warning = true
7
+ cmd.on_failure = true
8
+
9
+ # Command to execute
10
+ cmd.command = 'notify-send'
11
+
12
+ # Arguments to pass to the command.
13
+ #
14
+ # Must be an array of strings or callable objects.
15
+ #
16
+ # Callables will be invoked with #call(model, status),
17
+ # and the return value used as the argument.
18
+ #
19
+ # In strings you can use the following placeholders:
20
+ #
21
+ # %l - Model label
22
+ # %t - Model trigger
23
+ # %s - Status (success/failure/warning)
24
+ # %v - Status verb (succeeded/failed/succeeded with warnings)
25
+ #
26
+ # All placeholders can be used with uppercase letters to capitalize
27
+ # the value.
28
+ #
29
+ # Defaults to ["%L %v"]
30
+ #
31
+ # cmd.args = ["Backup %L", "%V"]
32
+ end
@@ -12,4 +12,5 @@
12
12
  hipchat.success_color = "green"
13
13
  hipchat.warning_color = "yellow"
14
14
  hipchat.failure_color = "red"
15
+ hipchat.api_version = "v1"
15
16
  end
@@ -11,6 +11,9 @@
11
11
 
12
12
  mail.from = "sender@email.com"
13
13
  mail.to = "receiver@email.com"
14
+ mail.cc = "cc@email.com"
15
+ mail.bcc = "bcc@email.com"
16
+ mail.reply_to = "reply_to@email.com"
14
17
  mail.address = "smtp.gmail.com"
15
18
  mail.port = 587
16
19
  mail.domain = "your.host.name"
@@ -16,4 +16,5 @@
16
16
  db.access_type = :app_folder
17
17
  db.path = "/path/to/my/backups"
18
18
  db.keep = 25
19
+ # db.keep = Time.now - 2592000 # Remove all backups older than 1 month.
19
20
  end
@@ -8,5 +8,6 @@
8
8
  server.port = 21
9
9
  server.path = "~/backups/"
10
10
  server.keep = 5
11
+ # server.keep = Time.now - 2592000 # Remove all backups older than 1 month.
11
12
  server.passive_mode = false
12
13
  end
@@ -4,4 +4,5 @@
4
4
  store_with Local do |local|
5
5
  local.path = "~/backups/"
6
6
  local.keep = 5
7
+ # local.keep = Time.now - 2592000 # Remove all backups older than 1 month.
7
8
  end
@@ -0,0 +1,12 @@
1
+ ##
2
+ # Qiniu [Storage]
3
+ #
4
+ store_with Qiniu do |qiniu|
5
+ # Qiniu Credentials
6
+ qiniu.access_key = "my_access_key"
7
+ qiniu.secret_key = "my_secret_key"
8
+
9
+ qiniu.bucket = "bucket-name"
10
+ qiniu.keep = 5
11
+ qiniu.path = "path/to/backups"
12
+ end
@@ -11,4 +11,6 @@
11
11
  s3.region = "us-east-1"
12
12
  s3.bucket = "bucket-name"
13
13
  s3.path = "path/to/backups"
14
+ s3.keep = 5
15
+ # s3.keep = Time.now - 2592000 # Remove all backups older than 1 month.
14
16
  end
@@ -8,6 +8,7 @@
8
8
  server.port = 22
9
9
  server.path = "~/backups/"
10
10
  server.keep = 5
11
+ # server.keep = Time.now - 2592000 # Remove all backups older than 1 month.
11
12
 
12
13
  # Additional options for the SSH connection.
13
14
  # server.ssh_options = {}
@@ -8,6 +8,7 @@
8
8
  server.port = 22
9
9
  server.path = "~/backups/"
10
10
  server.keep = 5
11
+ # server.keep = Time.now - 2592000 # Remove all backups older than 1 month.
11
12
 
12
13
  # Additional options for the SSH connection.
13
14
  # server.ssh_options = {}
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: backup-ssh
3
3
  version: !ruby/object:Gem::Version
4
- version: 4.1.10
4
+ version: 4.4.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Manuel Meurer
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2015-06-08 00:00:00.000000000 Z
11
+ date: 2016-12-28 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: CFPropertyList
@@ -128,14 +128,14 @@ dependencies:
128
128
  requirements:
129
129
  - - '='
130
130
  - !ruby/object:Gem::Version
131
- version: 1.5.1
131
+ version: 1.6.5
132
132
  type: :runtime
133
133
  prerelease: false
134
134
  version_requirements: !ruby/object:Gem::Requirement
135
135
  requirements:
136
136
  - - '='
137
137
  - !ruby/object:Gem::Version
138
- version: 1.5.1
138
+ version: 1.6.5
139
139
  - !ruby/object:Gem::Dependency
140
140
  name: equalizer
141
141
  requirement: !ruby/object:Gem::Requirement
@@ -576,14 +576,14 @@ dependencies:
576
576
  requirements:
577
577
  - - '='
578
578
  - !ruby/object:Gem::Version
579
- version: 2.5.4
579
+ version: 2.6.3
580
580
  type: :runtime
581
581
  prerelease: false
582
582
  version_requirements: !ruby/object:Gem::Requirement
583
583
  requirements:
584
584
  - - '='
585
585
  - !ruby/object:Gem::Version
586
- version: 2.5.4
586
+ version: 2.6.3
587
587
  - !ruby/object:Gem::Dependency
588
588
  name: memoizable
589
589
  requirement: !ruby/object:Gem::Requirement
@@ -604,28 +604,28 @@ dependencies:
604
604
  requirements:
605
605
  - - '='
606
606
  - !ruby/object:Gem::Version
607
- version: 1.25.1
607
+ version: 2.4.3
608
608
  type: :runtime
609
609
  prerelease: false
610
610
  version_requirements: !ruby/object:Gem::Requirement
611
611
  requirements:
612
612
  - - '='
613
613
  - !ruby/object:Gem::Version
614
- version: 1.25.1
614
+ version: 2.4.3
615
615
  - !ruby/object:Gem::Dependency
616
- name: mini_portile
616
+ name: mini_portile2
617
617
  requirement: !ruby/object:Gem::Requirement
618
618
  requirements:
619
619
  - - '='
620
620
  - !ruby/object:Gem::Version
621
- version: 0.6.2
621
+ version: 2.1.0
622
622
  type: :runtime
623
623
  prerelease: false
624
624
  version_requirements: !ruby/object:Gem::Requirement
625
625
  requirements:
626
626
  - - '='
627
627
  - !ruby/object:Gem::Version
628
- version: 0.6.2
628
+ version: 2.1.0
629
629
  - !ruby/object:Gem::Dependency
630
630
  name: multi_json
631
631
  requirement: !ruby/object:Gem::Requirement
@@ -702,28 +702,42 @@ dependencies:
702
702
  requirements:
703
703
  - - '='
704
704
  - !ruby/object:Gem::Version
705
- version: 2.9.2
705
+ version: 3.2.0
706
706
  type: :runtime
707
707
  prerelease: false
708
708
  version_requirements: !ruby/object:Gem::Requirement
709
709
  requirements:
710
710
  - - '='
711
711
  - !ruby/object:Gem::Version
712
- version: 2.9.2
712
+ version: 3.2.0
713
+ - !ruby/object:Gem::Dependency
714
+ name: netrc
715
+ requirement: !ruby/object:Gem::Requirement
716
+ requirements:
717
+ - - '='
718
+ - !ruby/object:Gem::Version
719
+ version: 0.11.0
720
+ type: :runtime
721
+ prerelease: false
722
+ version_requirements: !ruby/object:Gem::Requirement
723
+ requirements:
724
+ - - '='
725
+ - !ruby/object:Gem::Version
726
+ version: 0.11.0
713
727
  - !ruby/object:Gem::Dependency
714
728
  name: nokogiri
715
729
  requirement: !ruby/object:Gem::Requirement
716
730
  requirements:
717
731
  - - '='
718
732
  - !ruby/object:Gem::Version
719
- version: 1.6.6.2
733
+ version: 1.6.8
720
734
  type: :runtime
721
735
  prerelease: false
722
736
  version_requirements: !ruby/object:Gem::Requirement
723
737
  requirements:
724
738
  - - '='
725
739
  - !ruby/object:Gem::Version
726
- version: 1.6.6.2
740
+ version: 1.6.8
727
741
  - !ruby/object:Gem::Dependency
728
742
  name: open4
729
743
  requirement: !ruby/object:Gem::Requirement
@@ -753,75 +767,103 @@ dependencies:
753
767
  - !ruby/object:Gem::Version
754
768
  version: 2.0.0
755
769
  - !ruby/object:Gem::Dependency
756
- name: polyglot
770
+ name: pkg-config
757
771
  requirement: !ruby/object:Gem::Requirement
758
772
  requirements:
759
773
  - - '='
760
774
  - !ruby/object:Gem::Version
761
- version: 0.3.3
775
+ version: 1.1.7
762
776
  type: :runtime
763
777
  prerelease: false
764
778
  version_requirements: !ruby/object:Gem::Requirement
765
779
  requirements:
766
780
  - - '='
767
781
  - !ruby/object:Gem::Version
768
- version: 0.3.3
782
+ version: 1.1.7
769
783
  - !ruby/object:Gem::Dependency
770
- name: simple_oauth
784
+ name: qiniu
771
785
  requirement: !ruby/object:Gem::Requirement
772
786
  requirements:
773
787
  - - '='
774
788
  - !ruby/object:Gem::Version
775
- version: 0.2.0
789
+ version: 6.5.1
776
790
  type: :runtime
777
791
  prerelease: false
778
792
  version_requirements: !ruby/object:Gem::Requirement
779
793
  requirements:
780
794
  - - '='
781
795
  - !ruby/object:Gem::Version
782
- version: 0.2.0
796
+ version: 6.5.1
783
797
  - !ruby/object:Gem::Dependency
784
- name: thor
798
+ name: rest-client
785
799
  requirement: !ruby/object:Gem::Requirement
786
800
  requirements:
787
801
  - - '='
788
802
  - !ruby/object:Gem::Version
789
- version: 0.18.1
803
+ version: 1.7.3
790
804
  type: :runtime
791
805
  prerelease: false
792
806
  version_requirements: !ruby/object:Gem::Requirement
793
807
  requirements:
794
808
  - - '='
795
809
  - !ruby/object:Gem::Version
796
- version: 0.18.1
810
+ version: 1.7.3
797
811
  - !ruby/object:Gem::Dependency
798
- name: thread_safe
812
+ name: ruby-hmac
799
813
  requirement: !ruby/object:Gem::Requirement
800
814
  requirements:
801
815
  - - '='
802
816
  - !ruby/object:Gem::Version
803
- version: 0.1.3
817
+ version: 0.4.0
804
818
  type: :runtime
805
819
  prerelease: false
806
820
  version_requirements: !ruby/object:Gem::Requirement
807
821
  requirements:
808
822
  - - '='
809
823
  - !ruby/object:Gem::Version
810
- version: 0.1.3
824
+ version: 0.4.0
811
825
  - !ruby/object:Gem::Dependency
812
- name: treetop
826
+ name: simple_oauth
813
827
  requirement: !ruby/object:Gem::Requirement
814
828
  requirements:
815
829
  - - '='
816
830
  - !ruby/object:Gem::Version
817
- version: 1.4.15
831
+ version: 0.2.0
818
832
  type: :runtime
819
833
  prerelease: false
820
834
  version_requirements: !ruby/object:Gem::Requirement
821
835
  requirements:
822
836
  - - '='
823
837
  - !ruby/object:Gem::Version
824
- version: 1.4.15
838
+ version: 0.2.0
839
+ - !ruby/object:Gem::Dependency
840
+ name: thor
841
+ requirement: !ruby/object:Gem::Requirement
842
+ requirements:
843
+ - - '='
844
+ - !ruby/object:Gem::Version
845
+ version: 0.18.1
846
+ type: :runtime
847
+ prerelease: false
848
+ version_requirements: !ruby/object:Gem::Requirement
849
+ requirements:
850
+ - - '='
851
+ - !ruby/object:Gem::Version
852
+ version: 0.18.1
853
+ - !ruby/object:Gem::Dependency
854
+ name: thread_safe
855
+ requirement: !ruby/object:Gem::Requirement
856
+ requirements:
857
+ - - '='
858
+ - !ruby/object:Gem::Version
859
+ version: 0.1.3
860
+ type: :runtime
861
+ prerelease: false
862
+ version_requirements: !ruby/object:Gem::Requirement
863
+ requirements:
864
+ - - '='
865
+ - !ruby/object:Gem::Version
866
+ version: 0.1.3
825
867
  - !ruby/object:Gem::Dependency
826
868
  name: twitter
827
869
  requirement: !ruby/object:Gem::Requirement
@@ -890,7 +932,6 @@ executables:
890
932
  extensions: []
891
933
  extra_rdoc_files: []
892
934
  files:
893
- - LICENSE.md
894
935
  - README.md
895
936
  - bin/backup
896
937
  - lib/backup.rb
@@ -928,6 +969,7 @@ files:
928
969
  - lib/backup/model.rb
929
970
  - lib/backup/notifier/base.rb
930
971
  - lib/backup/notifier/campfire.rb
972
+ - lib/backup/notifier/command.rb
931
973
  - lib/backup/notifier/datadog.rb
932
974
  - lib/backup/notifier/flowdock.rb
933
975
  - lib/backup/notifier/hipchat.rb
@@ -951,7 +993,7 @@ files:
951
993
  - lib/backup/storage/dropbox.rb
952
994
  - lib/backup/storage/ftp.rb
953
995
  - lib/backup/storage/local.rb
954
- - lib/backup/storage/ninefold.rb
996
+ - lib/backup/storage/qiniu.rb
955
997
  - lib/backup/storage/rsync.rb
956
998
  - lib/backup/storage/s3.rb
957
999
  - lib/backup/storage/scp.rb
@@ -985,6 +1027,7 @@ files:
985
1027
  - templates/cli/model
986
1028
  - templates/cli/notifier/zabbix
987
1029
  - templates/cli/notifiers/campfire
1030
+ - templates/cli/notifiers/command
988
1031
  - templates/cli/notifiers/datadog
989
1032
  - templates/cli/notifiers/flowdock
990
1033
  - templates/cli/notifiers/hipchat
@@ -1002,7 +1045,7 @@ files:
1002
1045
  - templates/cli/storages/dropbox
1003
1046
  - templates/cli/storages/ftp
1004
1047
  - templates/cli/storages/local
1005
- - templates/cli/storages/ninefold
1048
+ - templates/cli/storages/qiniu
1006
1049
  - templates/cli/storages/rsync
1007
1050
  - templates/cli/storages/s3
1008
1051
  - templates/cli/storages/scp
@@ -1024,16 +1067,7 @@ homepage: https://github.com/krautcomputing/backup/tree/ssh
1024
1067
  licenses:
1025
1068
  - MIT
1026
1069
  metadata: {}
1027
- post_install_message: |2+
1028
-
1029
- Thank you for installing Backup!
1030
-
1031
- See the Release Notes for changes in this version:
1032
- http://backup.github.io/backup/v4/release-notes
1033
-
1034
- If you're upgrading from v3.x, be sure to read:
1035
- http://backup.github.io/backup/v4/upgrading
1036
-
1070
+ post_install_message:
1037
1071
  rdoc_options: []
1038
1072
  require_paths:
1039
1073
  - lib
@@ -1041,7 +1075,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
1041
1075
  requirements:
1042
1076
  - - ">="
1043
1077
  - !ruby/object:Gem::Version
1044
- version: 1.9.3
1078
+ version: '2.0'
1045
1079
  required_rubygems_version: !ruby/object:Gem::Requirement
1046
1080
  requirements:
1047
1081
  - - ">="
@@ -1049,9 +1083,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
1049
1083
  version: '0'
1050
1084
  requirements: []
1051
1085
  rubyforge_project:
1052
- rubygems_version: 2.4.5
1086
+ rubygems_version: 2.6.8
1053
1087
  signing_key:
1054
1088
  specification_version: 4
1055
1089
  summary: Provides an elegant DSL in Ruby for performing backups on UNIX-like systems.
1056
1090
  test_files: []
1057
- has_rdoc: