diff --git a/_states/debmirror.py b/_states/debmirror.py
index 83c51a6..2c0bb8a 100644
--- a/_states/debmirror.py
+++ b/_states/debmirror.py
@@ -101,6 +101,11 @@
     return env
 
 
+def _check_mirror_cache(cache_dir):
+    cacheReadinessKeyFile = os.path.join(cache_dir, '.ready')
+    return os.path.isfile(cacheReadinessKeyFile)
+
+
 def _get_cmdline(name, tgt):
     cmdline = " debmirror "
     if tgt.get('extra_flags'):
@@ -129,7 +134,15 @@
         for key, value in enumerate(sorted(tgt['filter'])):
             cmdline += " " + tgt['filter'][value]
     if tgt.get('target_dir', False):
-        cmdline += ' ' + _get_target_path(name, tgt)['target_dir']
+        target_dir = _get_target_path(name, tgt)['target_dir']
+        if tgt.get('cache_dir'):
+            cache_dir = tgt.get('cache_dir')
+            if _check_mirror_cache(cache_dir):
+                cmdline += ' ' + target_dir
+            else:
+                cmdline += ' ' + cache_dir
+        else:
+            cmdline += ' ' + target_dir
     return cmdline
 
 
@@ -154,8 +167,29 @@
     fh.setFormatter(fh_format)
     log2file = logging.getLogger("debmirror")
     log2file.addHandler(fh)
-    result = __salt__['cmd.run_all'](cmdline, redirect_stderr=True,
-                                     env=env_vars)
+    # check cache usage
+    if tgt.get('cache_dir'):
+        cache_dir = tgt.get('cache_dir')
+        target_dir = _get_target_path(name, tgt)['target_dir']
+        cpline = "find . -name *.deb -exec cp -rlf --parent {} %s \\;" % (
+            target_dir)
+        if _check_mirror_cache(cache_dir):
+            result = __salt__['cmd.run_all'](cpline, redirect_stderr=True,
+                                             cwd=cache_dir, env=env_vars)
+            if result['retcode'] == 0:
+                log2file.debug(result['stdout'])
+                result = __salt__['cmd.run_all'](cmdline, redirect_stderr=True,
+                                                 env=env_vars)
+        else:
+            result = __salt__['cmd.run_all'](cmdline, redirect_stderr=True,
+                                             env=env_vars)
+            if result['retcode'] == 0:
+                log2file.debug(result['stdout'])
+                result = __salt__['cmd.run_all'](cpline, redirect_stderr=True,
+                                                 cwd=cache_dir, env=env_vars)
+    else:
+        result = __salt__['cmd.run_all'](cmdline, redirect_stderr=True,
+                                         env=env_vars)
     log2file.debug(result['stdout'])
     # destroy file logger
     for i in list(log2file.handlers):
